Определить раздел кода
Я пытаюсь собрать следующий код с помощью 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