2017-07-28 575 views
1

我最感興趣的是提取體系結構版本,例如v5,v5T等。我一直在引用Elf for the ARM Architecture Section 4.3.6 Build Attributes,這對於幫助我達到這一點很有幫助。我可以找到.ARM.attributes部分的開頭,並且可以解析信息的第一個關鍵部分:Format-version,Section-length和vendor-name + null字節,沒問題。那之後我有點失落。以下是我在針對ARMv5T體系結構編譯的精靈上使用hexdump -vC運行的快照。該部分的開始是77f0b。如何解釋ELF中.ARM.attributes中的數據以獲取體系結構版本和其他屬性?

enter image description here

我們可以看到: 格式版本:一個

節長度:0x29

供應商名稱: 「AEABI」

顯然,5T是ASCII可用形式在77f1C,但我不知道如何解釋我需要解析的標籤以獲得該值。

注意:是的,我知道有些工具可以用來做這件事,但我需要在我寫的應用程序中提取信息。它已經解析了必要的信息,使其成爲現實。

獎金問題:PowerPC是否有類似的標籤?我找不到任何支持文檔。

回答

1

這些標籤記錄在Addenda to, and Errata in, the ABI for the ARM Architecture(注意:鏈接可能會過時版本)。例如,在第2.3.5.2節(與目標相關的屬性)中,我們瞭解到Tag_CPU_arch的值爲6,緊接在轉儲中的Tag_CPU_name(5,在5T之前)。根據文件中的表格,它的論點是3,它又對應於ARM v5T。下一個標記是Tag_ARM_ISA_use(8),參數爲1,意思是用戶希望此實體可以使用ARM指令(無論這意味着什麼),等等。

請注意,整數是以uleb128格式編碼的,儘管這裏並不明顯。該編碼在DWARF standard(DWARF 3的7.6節)中進行了描述。基本上,它是基128,小端,你需要在MSB設置時繼續閱讀。

相關問題