【问题标题】:C++ Exception Handling for ARM - Format of Generic Exception Handling Table EntriesARM 的 C++ 异常处理 - 通用异常处理表条目的格式
【发布时间】:2015-09-28 08:06:13
【问题描述】:

the exception handling ABI for the ARM architecture 中,它给出了“ARM 定义的紧凑模型”异常处理表条目的格式,但除了第一个词是个性例程的偏移量这一事实之外,没有关于“通用模型”EHT 条目的信息。

除了第一个单词之外,是否有任何文档给出了这些条目的格式?我可以看到每个条目中出现的前三个单词都有一个模式,例如:

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

(字节顺序颠倒)

第二个词似乎在每个条目的几个值之间变化,第三个词几乎总是以 ffff 结尾(在一种情况下,我看到它是 10ff)。 第三个字的第一个字节有时表示条目的长度(足够的时间不是巧合,但不足以成为规则)。

我看到前 3 个单词在条目之间经常重复,但我也不知道如何解释它们。

我看过的文档:

【问题讨论】:

  • 我认为大部分信息都在PDF中exception handling ABI for the ARM architecture表条目的大小是可变的。它以特定于供应商和语言的方式对通过函数传播异常所需的操作进行编码。 个性是处理语言异常模型的一种方式。例如,'C' 非常简单,附录 C 表示典型的是三条指令,最多七条。

标签: c++ exception-handling arm embedded


【解决方案1】:

在 ARM® 架构的异常处理 ABI 的第 4.3 节中,它说:

通用——一个表条目由一个相对于位置的偏移量组成 定义了接口和运行时交互协议的函数 通过此 EHABI,后跟该函数专用格式的数据。

因此,通用条目中的数据格式由个性例程决定。如果你的个性个性例程被命名为 __gxx_personality_v0 那么你可以在 libstdc++ 中找到源代码(eh_*.cc,尤其是 eh_personality.cc)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2012-06-11
    相关资源
    最近更新 更多