Я написал простой x86 сборка рутина:objdump --dwarf сборочного кода не перечисляет функции
$ cat asm.s
.global foo
.section .text
foo:
nop
ret
И скомпилирован с
$ gcc -c -g asm.s -o asm.o
Но когда я objdump --dwarf asm.o
, он не отображает информация о функции foo
. Похоже, gcc не создает .debug_info
подробнее о foo
.
BTW, есть запись foo
в .symtab
.
Любые идеи?
Функция не вызывается. Может быть, он оптимизирован как мертвый код? –
@JanHenke спасибо. asm.s является одним из модулей компиляции. Я вызываю его из main(), определенного в другом модуле компиляции. Кроме того, я не использую какие-либо опции оптимизации gcc. В противном случае он не появится в таблице символов. правильно? – Ravi