Доступ к разделу .data в Независимом от позиции коде

Я создаю общую библиотеку с NASM. В этой библиотеке в какой-то функции мне нужно то, что мы бы назвалистатическая переменная в C. В принципе, я думаю, что это место в разделе .data:

    SECTION .data
last_tok:       dq 0 ; Define a QWORD

Проблема возникает, когда я пытаюсьдоступ last_tok в моей функции.

Я прочиталРуководство NASM: 8.2 Написание общих библиотек Linux / ELF который объясняет проблему и дает решение.

    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

Может работать с ELF32, но с ELF64 я получаю следующую ошибку:

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

Что я делаю неправильно?

Ответы на вопрос(1)

Ваш ответ на вопрос