Acesse a seção .data no Código de posição independente

Estou construindo uma biblioteca compartilhada com o NASM. Nessa biblioteca, em alguma função, eu preciso do que chamaríamos devariável estática em C. Basicamente, acho que há algum espaço na seção .data:

    SECTION .data
last_tok:       dq 0 ; Define a QWORD

O problema surge quando tentoAcesso last_tok na minha função.

Eu li oManual NASM: 8.2 Gravando bibliotecas compartilhadas Linux / ELF o que explica o problema e fornece a solução.

    SECTION .data
last_tok:              dq 0     ; Define a QWORD

    SECTION .text
    EXTERN _GLOBAL_OFFSET_TABLE_
    GLOBAL strtok:function
strtok:
    enter    0, 0
    push     rbx
    call     .get_GOT
.get_GOT:
    pop      rbx
    add      rbx, _GLOBAL_OFFSET_TABLE_ + $ - .get_GOT wrt ..gotpc

    mov      [rbx + last_tok wrt ..gotoff], rdi ; Store the contents of RDI at last_tok

    mov      rbx, [rbp - 8]
    leave
    ret

Pode funcionar com o ELF32, mas com o ELF64 recebo o seguinte erro:

nasm -f elf64  -o strtok.o strtok.s
strtok:15: error: ELF64 requires ..gotoff references to be qword
<builtin>: recipe for target 'strtok.o' failed
make: *** [strtok.o] Error 1

O que estou fazendo errado?

questionAnswers(1)

yourAnswerToTheQuestion