1
我有點奇怪的問題。如果我使用objdump的-d拆卸的ARM二進制它可以解決功能(系統庫)的分支指令例如爲:gdb與objdump arm拆裝器功能分支名稱解析
8404: e581e000 str lr, [r1]
8408: e59f0028 ldr r0, [pc, #40] ; 8438 <address_of_message1>
840c: ebffffc1 bl 8318 <[email protected]>
8410: e59f0028 ldr r0, [pc, #40] ; 8440 <address_of_scan_pattern>
8414: e59f1028 ldr r1, [pc, #40] ; 8444 <address_of_read>
8418: ebffffc4 bl 8330 <[email protected]>
841c: e59f0018 ldr r0, [pc, #24] ; 843c <address_of_message2>
所以我看到BL 8318會調用printf的名字。 當我使用GDB和disas命令我沒有得到函數名(相同的代碼示例)的拆卸,請參閱:
0x00008408 <+8>: ldr r0, [pc, #40] ; 0x8438 <address_of_message1>
0x0000840c <+12>: bl 0x8318
0x00008410 <+16>: ldr r0, [pc, #40] ; 0x8440 <address_of_scan_pattern>
0x00008414 <+20>: ldr r1, [pc, #40] ; 0x8444 <address_of_read>
0x00008418 <+24>: bl 0x8330
在gdb中我只看到分支0x8330。
是否有可能使用gdb解析函數名?
任何人都可以向我解釋爲什麼objdump可以解析系統functin調用和gdb的名稱嗎?