Определить раздел кода

Я пытаюсь собрать следующий код с помощью Nasm:

section .stage1_main 
extern stage1_get_stage2_addr
global stage1_main

stage1_main:
    sub rsp, 0x8
    call stage1_get_stage2_addr 
    cmp rax, -1 
    jz error
    add rsp, 0x8
    push stage1_main
    jmp rax 

error:
     ret

.stage1_main - это новый раздел, который я определил. проблема в том, что Nasm определяет его как раздел DATA

objdump -h main.o

main.o: формат файла elf64-x86-64

Разделы:

Имя идентификатора Размер VMA LMA Файл выключен Algn 0 .stage1_main 0000001b 0000000000000000 0000000000000000 000001c0 2**0 СОДЕРЖАНИЕ, ALLOC, LOAD, RELOC, READONLY, DATA

Мне нужен раздел кода... есть ли способ определить мой раздел как раздел CODE (например,.text)

1 ответ

Решение

Вы можете сделать свой section директива явно указывает, что содержимое раздела является исполняемым:

section .stage1_main exec

и вы также можете настаивать на 16-байтовом выравнивании (что nasm будет делать автоматически для .text раздел):

section .stage1_main exec align=16

Другие вопросы по тегам