反汇编大型ARM文件时的Objdump bug(?)

时间:2017-08-01 16:05:00

标签: arm objdump

我试图在linux机器上使用arm-linux-gnueabi-objdump在我的kobo(~12Mb)上找到libnickel.so。 文件格式被正确检测为elf32-littlearm,并且所有操作码都是32位,如ARM所预期的那样;但突然输出方面的变化,显示非32位操作码:

===正确的ARM代码===

...
4dc288: 447b6802    ldrbtmi r6, [fp], #-2050    ; 0xfffff7fe
4dc28c: 4a06b11a    bmi 6886fc <_ZN20N3BookInfoController12onBookParsedERK6Volume+0x54>
4dc290: b103589b            ; <UNDEFINED> instruction: 0xb103589b
4dc294: e8bd4798    pop {r3, r4, r7, r8, r9, sl, lr}
4dc298: f7ff4008            ; <UNDEFINED> instruction: 0xf7ff4008
4dc29c: bf00bfb3    svclt   0x0000bfb3
4dc2a0: 00627fee    rsbeq   r7, r2, lr, ror #31
4dc2a4: 00682ef2    strdeq  r2, [r8], #-226 ; 0xffffff1e    ; <UNPREDICTABLE>
4dc2a8: 0001d51c    andeq   sp, r1, ip, lsl r5

====不正确的代码(?)====

004dc2ac <_ZN11BusyHandler10signalDoneEP8BusyData>:
4dc2ac: b5b0        push    {r4, r5, r7, lr}
4dc2ae: 4605        mov r5, r0
4dc2b0: 480d        ldr r0, [pc, #52]   ; (4dc2e8 <_ZN11BusyHandler10signalDoneEP8BusyData+0x3c>)
4dc2b2: b082        sub sp, #8
4dc2b4: af00        add r7, sp, #0
4dc2b6: f107 0408   add.w   r4, r7, #8
4dc2ba: 4478        add r0, pc
4dc2bc: 6078        str r0, [r7, #4]
4dc2be: f7d2 e884   blx 4ae3c8 <_ZN6QMutex4lockEv@plt>
...

也尝试在原生ARM机器上,结果相同。 我无法弄清楚发生了什么 - 这是一个错误吗?

0 个答案:

没有答案