为什么用TAG_variable和TAG_base_type冗余属性DW_AT_endianity?

时间:2018-07-27 11:17:03

标签: dwarf

我正在阅读DWARFv4规范,遇到属性DW_AT_endianity。

如果我的理解是错误的,请纠正我。

根据规范,两个标记值TAG_variable和TAG_base_type都可以具有该属性。

但据我所知,当您创建TAG_variable时,您必须传递“ Type”,它可以是TAG_base_type(也可以是其他类型)。 所以我的问题是,如果我们在TAG_variable上设置DW_AT_endianity,为什么TAG_base_type也支持该属性。

换句话说,每个变量都具有某种类型并且可以具有该属性,那么为什么需要同时支持类型和变量的属性?

1 个答案:

答案 0 :(得分:1)

DW_AT_endianity属性是response to a proposed C compiler extension allowing the "creation of data in both big and little endian formats".,看来该属性是针对基本类型(如this example)或结构/联合(如this one)的。如您所说,对一个简单变量及其基础类型使用相同的属性将是多余的-请注意,该属性是可选的(请参阅DWARF 4,第4.1.12和5.1节)。