与How do I disassemble raw x86 code?类似,但是对于MIPS体系结构:如何拆分原始MIPS代码与objdump
?我要检查在vmlinux的图像的指令,但是这样做,我现在必须:如何反汇编原始MIPS代码?
: > x.c
mipsel-linux-gnu-gcc -c -o x.o x.c
mipsel-linux-gnu-objcopy --add-section raw=vmlinux x.o
mipsel-linux-gnu-objcopy --remove-section .comment x.o
mipsel-linux-gnu-objdump -D x.o | less
是否有更简单的方法来做到这一点?我试过下面无济于事:
mipsel-linux-gnu-objdump -b elf32-tradlittlemips -mmips -Mgpr-names=O32,cp0-names=mips1,cp0-names=mips1,hwr-names=mips1,reg-names=mips1 -D vmlinux | less
它只是吐出:
mipsel-linux-gnu-objdump: vmlinux: File format not recognized
如果有帮助,这里是一些命令的输出:
$ file x.o
x.o: ELF 32-bit LSB relocatable, MIPS, MIPS-I version 1 (SYSV), with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x1040000, not stripped
$ mipsel-linux-gnu-objdump -p x.o
x.o: file format elf32-tradlittlemips
private flags = 1006: [abi=O32] [mips1] [not 32bitmode] [PIC] [CPIC]
目标是一个AR7 CPU。
vmlinux不包含任何部分,它仅包含说明。问题是,我没有安装gcc和objcopy工具,只能在虚拟机中安装。既然有办法让objdump跳过x86中的gcc/objcopy路径,我想知道在mips上是否有可能? – Lekensteyn 2012-03-28 21:53:10
我明白了;你的目标文件'x.o'只是一个虚拟的,而你正在从'vmlinux'中取出部分。这很奇怪;我一直可以在'vmlinux'上运行'objdump',用于各种体系结构:MIPS,ARM,...如果你用''调用''mipsel-linux-gnu-objdump',吐出什么东西? d vmlinux',没有那些其他参数?另外:'文件vmlinux'。 – Kaz 2012-03-28 21:59:46
文件产生'vmlinux:data' – Lekensteyn 2012-03-28 22:23:42