我正在尝试使用objdump来显示源代码以及使用-S选项进行反汇编。我在cygwin上运行objdump。我在cygwin上为ARM构建了objdump。编译器的构建是gcc。
elf文件是使用TI ARM编译器使用Thumb2指令集为ARM处理器构建的。
我能够运行objdump来提取反汇编(使用-d选项)。
但是,当我尝试使用它来显示源代码时,我收到了分段错误。
它一到达.text部分就会崩溃。使用objdump -Mforce-thumb -S prog.out
的输出是:
prog.out:文件格式elf32-littlearm
反汇编.text:
000000c0
<add_function>
:
分段错误(核心转储)
答案 0 :(得分:0)
Objdump不是反编译器,而是反汇编程序。如果二进制文件没有使用反拆卸技巧,则拆卸(相对)简单。相反,反编译是一件非常困难的事情,而objdump并没有尝试这样做。如果二进制包含它,它只能转储源。这对于原生二进制文件来说并不常见,但据我所知,Java二进制文件往往包含源代码。