ZHCADC3B February 2019 – October 2023
DWARF 标准允许工具链供应商定义一些附加标签和属性,用于表示架构或工具链特定的信息。TI 定义了其中一些。本节用于记录通常适用于 C28x 架构的标签和属性。
遗憾的是,所有供应商共享一组允许值,因此 ABI 不能强制在供应商之间使用标准值。我们只能让生产者使用相同的语义定义他们自己的供应商特定标签和属性(如果可能,使用相同的值),并且请消费者使用 DW_AT_producer 属性,以便解释因工具链而异的供应商特定值。
表 10-3 为 C28x 定义了 TI 的供应商特定 DIE 标签。表 10-3 定义了 TI 的供应商特定属性。
名称 | 值 | 说明 |
---|---|---|
DW_TAG_TI_branch | 0x4088 | 标识调用和返回 |
DW_TAG_TI_branch
此标记标识用作调用和返回的分支。它作为 DW_TAG_subprogram DIE 的子项生成。它具有一个与分支指令的位置对应的 DW_AT_lowpc 属性。
如果分支是函数调用,则它具有一个非零值 DW_AT_TI_call 属性。它还可能具有 DW_AT_name 属性,用于指示被调用函数的名称;或者,如果被调用者未知(就像通过指针调用一样),则具有 DW_AT_TI_indirect 属性。
如果分支是返回,则它具有一个非零值 DW_AT_TI_return 属性。
名称 | 值 | 类 | 说明 |
---|---|---|---|
DW_AT_TI_symbol_name | 0x2001 | string | 目标文件名(已改编) |
DW_AT_TI_return | 0x2009 | 标志[flag] | 分支是返回 |
DW_AT_TI_call | 0x200A | 标志[flag] | 分支是调用 |
DW_AT_TI_asm | 0x200C | 标志[flag] | 函数为汇编语言 |
DW_AT_TI_indirect | 0x200D | 标志[flag] | 分支是间接调用 |
DW_AT_TI_max_frame_size | 0x2014 | 常量 | 激活记录大小 |
DW_AT_TI_call、DW_AT_TI_return、DW_AT_TI_indirect:如前所述,这些属性适用于 DW_TAG_TI_branch DIE。
DW_AT_TI_symbol_name:此属性可能出现在任何具有 DW_symbol_name 的 DIE 中。它提供与变量或函数关联的目标文件级名称;即具有由工具链对源代码级别名称所应用的任何改编或其他修改。
DW_AT_TI_max_frame_size:此属性可能出现在 DW_TAG_subprogram DIE 中。它以字节为单位,指示函数激活所需的栈空间量。它的预期用途是用于执行静态栈深度分析的下游工具。