3
我在項目中使用了一些第三方庫。 該項目是一個MIPS(isa32r2)內核的嵌入式系統。 最近我們在第三方庫(libusb.a)中發現了一個bug,但由於時間的關係,沒有技術支持了。 所以我嘗試拆解libarary。反彙編MIPS架構(isa32r2)的庫的起點是什麼?
$ mips-sde-elf-ar -x libusb.a $ mips-sde-elf-objdump.exe -Ds -mmips:isa32r2 -EL usbhost_func.o > usbhost_func.s
文件usbhost_func.s我能得到這樣一些信息:
Disassembly of section .text.usbhost_init: 00000000 : 0: 27bdffd8 addiu sp,sp,-40 4: 3c020000 lui v0,0x0
.text.usbhost_init看起來像usbhost_init()的完整拆卸功能。 但有一些其他的信息在這裏想:
Disassembly of section .pdr: 00000000 : 0: 00000000 nop 4: 40000000 mfc0 zero,c0_index 8: fffffffc sdc3 $31,-4(ra) ... why here is ... 14: 00000008 jr zero 18: 0000001e 0x1e 1c: 0000001f 0x1f 20: 00000000 nop Disassembly of section .gnu.attributes: 00000000 : 0: 00000f41 0xf41 4: 756e6700 jalx 5b99c00 8: 00070100 sll zero,a3,0x4 c: 03040000 0x3040000
所以我的問題是:
- 什麼的secton的意思是像部分.pdr?
- 爲什麼有一些...在setion .pdr?
- 反彙編mips庫的過程如何?
任何提示和信息welcome.Tks。
經過谷歌搜索,我發現這個[使用由「GAS生成的.pdr」部分](http://www.sourceware.org/ml/gdb-patches/2002-06/msg00175.htm) 'ECOFF調試信息(mdebug)包含了PDR的概念。除此之外,MIPS使用 這些功能來解除功能。現在我們可以通過 從mdebug或代碼檢查中獲取它們。但是當前的GNU binutils 會發出「.pdr」部分,而不是使用舊的「.mdebug」樣式調試信息。**。pdr ** settion是一個調試信息區段。謝謝@leeduhem –
@ ssd-tek如果這個答案滿足你的問題,你應該把它標記爲「接受」:) –