I einfache x86-Assembler-Routine geschrieben:objdump --dwarf von Assembler-Code nicht auflisten Funktion
$ cat asm.s
.global foo
.section .text
foo:
nop
ret
und kompiliert es mit
$ gcc -c -g asm.s -o asm.o
Aber wenn ich objdump --dwarf asm.o
tun, wird es nicht angezeigt werden Info über die Funktion foo
. Sieht so aus, gcc erstellt keine .debug_info
Details über foo
.
BTW, gibt es einen Eintrag von foo
in .symtab
.
Irgendwelche Ideen?
Die Funktion wird nicht aufgerufen. Vielleicht ist es als toter Code optimiert? –
@ JanHenke danke. asm.s gehört zur Compilation Unit. Ich rufe es von main() in anderen Compilation Unit definiert. Abgesehen davon verwende ich keine GCC-Optimierungsoptionen. Sonst wird es nicht in der Symboltabelle erscheinen. Recht? – Ravi