TRACE32 如何知道从 ELF 加载的全局符号的类型?
How does TRACE32 know the type of a global symbol loaded from an ELF?
我有一个奇怪的行为:
我加载了一个包含两个全局变量的 ELF 文件:E1 和 S1
这两个变量都声明为 "int" 但 TRACE32 将 E1 视为 FLOAT,将 S1 视为 int。
我尝试使用 "readelf" 但它只说 E1 和 S1 是对象。
T32 如何找到这些信息?
I try to use "readelf" but it only say that E1 and S1 are OBJECT.
你可能这样做了:readelf -s elf-file
(一般来说,在提问时,最好确切地说你说的是什么做了)。
试试 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
如何具有 0x57
的 DW_AT_type
(int
),而 S1
具有类型 0xd7
(float
).
我有一个奇怪的行为:
我加载了一个包含两个全局变量的 ELF 文件:E1 和 S1
这两个变量都声明为 "int" 但 TRACE32 将 E1 视为 FLOAT,将 S1 视为 int。
我尝试使用 "readelf" 但它只说 E1 和 S1 是对象。
T32 如何找到这些信息?
I try to use "readelf" but it only say that E1 and S1 are OBJECT.
你可能这样做了:readelf -s elf-file
(一般来说,在提问时,最好确切地说你说的是什么做了)。
试试 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
如何具有 0x57
的 DW_AT_type
(int
),而 S1
具有类型 0xd7
(float
).