2016-07-25 176 views
0

我写了简单的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不会创建有关foo的详细信息.debug_info

顺便说一句,在.symtab有一个foo条目。

任何想法?

+0

该函数未被调用。也许它被优化为死代码? –

+0

@JanHenke谢谢。 asm.s是编制单位之一。我从其他编译单元中定义的main()调用它。除此之外,我没有使用任何gcc优化选项。否则它不会出现在符号表中。对? – Ravi

回答

1

错误出现在objdump命令中。使用下面的命令,它会显示你的函数的汇编列表:

objdump -d -M intel -S asm.o 

现在你更新的问题 - 如果你要包括调试信息,然后调用与汇编:

gcc -gdwarf2 -c asm.s -o asm.o 

现在objdump --dwarf将显示调试信息。

+0

使用-d选项编号的objdump将反汇编代码。但我正在问 - 矮人选项。 (问题的更新标题) – Ravi