Acceda a la sección .data en Código independiente de posición

Estoy construyendo una biblioteca compartida con NASM. En esa biblioteca, en alguna función, necesito lo que llamaríamos unvariable estática en C. Básicamente, creo que hay algo de espacio en la sección .data:

    SECTION .data
last_tok:       dq 0 ; Define a QWORD

El problema surge cuando intentoacceso last_tok en mi funcion

yo leo elManual NASM: 8.2 Escritura de bibliotecas compartidas Linux / ELF que explica el problema y da la solución.

    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

Puede funcionar con ELF32, pero con ELF64 obtengo el siguiente error:

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

¿Qué estoy haciendo mal?

Respuestas a la pregunta(1)

Su respuesta a la pregunta