我有一种奇怪的行为:
我加载了一个包含两个全局变量的ELF文件:E1和S1
这两个变量都声明为“int”,但TRACE32将E1视为FLOAT,S1视为int。
我尝试使用“readelf”,但它只说E1和S1是OBJECT。
T32如何找到这些信息?
答案 0 :(得分:1)
我尝试使用" readelf"但它只说E1和S1是OBJECT。
你可能这样做了:readelf -s elf-file
(一般来说,在提问时,最好说完全你做了什么)。< / p>
请尝试使用readelf -wi elf-file
。你可能会看到类似的东西:
<1><57>: Abbrev Number: 3 (DW_TAG_base_type)
<58> DW_AT_byte_size : 4
<59> DW_AT_encoding : 5 (signed)
<5a> DW_AT_name : int
...
<1><af>: Abbrev Number: 6 (DW_TAG_variable)
<b0> DW_AT_name : E1
<b3> DW_AT_decl_file : 1
<b4> DW_AT_decl_line : 4
<b5> DW_AT_type : <0x57>
<b9> DW_AT_external : 1
<b9> DW_AT_location : 9 byte block: 3 50 10 60 0 0 0 0 0 (DW_OP_addr: 601050)
<1><c3>: Abbrev Number: 6 (DW_TAG_variable)
<c4> DW_AT_name : S1
<c7> DW_AT_decl_file : 1
<c8> DW_AT_decl_line : 5
<c9> DW_AT_type : <0xd7>
<cd> DW_AT_external : 1
<cd> DW_AT_location : 9 byte block: 3 4c 10 60 0 0 0 0 0 (DW_OP_addr: 60104c)
<1><d7>: Abbrev Number: 2 (DW_TAG_base_type)
<d8> DW_AT_byte_size : 4
<d9> DW_AT_encoding : 4 (float)
<da> DW_AT_name : (indirect string, offset: 0x9d): float
请注意E1
DW_AT_type
0x57
int
S1
0xd7
float
类型{{1}} {{1}}