2015-09-28 47 views
1

the exception handling ABI for the ARM architecture它給出了「ARM定義的緊湊模型」異常處理表條目的格式,但沒有關於「通用模型」EHT條目的信息,第一個詞是人格套路的偏移。ARM的C++異常處理 - 通用異常處理表條目的格式

是否有任何文檔給出這些條目的格式超出第一個單詞?我可以看到有到發生在每一個條目中的第三個字的圖案,例如:

0553ff7f a908b100 ffff019c 80808000 92808080 00a48080 8000b680 80800000 ba808080 00848080 80000000 

(字節順序顛倒)

第二個字似乎爲每個條目幾個值之間變化,第三個單詞幾乎總是以ffff結尾(有一種情況我已經看到它是10ff)。 第三個單詞的第一個字節有時會指示條目的長度(足夠的時間不是巧合,但不足以說明是規則)。

我看到第一個3之後定期重複的詞語,但我不知道如何解釋它們。

文檔我已經看了:

+0

我認爲大部分信息都在PDF [ARM體系結構的異常處理ABI]中http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038a/IHI0038A_ehabi.pdf); *表格條目具有可變大小。它以供應商和語言特定的方式編碼通過函數傳播異常所需的操作。*個性是處理語言異常模型的一種方式。例如,'C'非常簡單,*附錄C *表示典型的是三條指令,最多七條。 –

回答

0

在4.3節的異常處理ABI的ARM®架構的,它說:

通用 - 一個表項包含一個地址相對於 函數的偏移量,該接口和運行時交互協議由EHABI定義爲 ,後面是該函數專用格式的數據。

因此,通用條目中數據的格式由個性例程決定。如果你的個性人格例程名爲__gxx_personality_v0,那麼你可以在libstdC++(eh_ * .cc,尤其是eh_personality.cc)中找到源代碼。