2015-09-28 48 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)中找到源代码。