Search code examples
dwarf

Why redudant attribute DW_AT_endianity with TAG_variable and TAG_base_type?


I was reading DWARFv4 spec and came across attribute DW_AT_endianity.

Correct me if my understanding is wrong.

As per spec, Two of the tag values TAG_variable and TAG_base_type both can have that attribute.

But as far as, i understand when you create a TAG_variable you have to pass the "Type", which can be of TAG_base_type(others are also possible). So my question is if we are setting DW_AT_endianity on TAG_variable, why TAG_base_type also supports that attribute.

In other words every variable is of some type and can have that attribute, so why need attribute support for both type and variable?


Solution

  • The DW_AT_endianity attribute was the response to a proposed C compiler extension allowing the "creation of data in both big and little endian formats". It appears that the attribute was intended for base types (like this example) or structs/unions (like this one). Using the same attribute for both a simple variable and its underlying base type would, as you say, be redundant — note that the attribute is optional (see DWARF 4, sections 4.1.12 and 5.1).