dwarf / dwarf2是否有助于导出接受固定大小数组的函数的大小信息?

时间:2014-06-01 20:19:07

标签: dwarf

假设一个C模块包含以下函数定义:

void foo(int (*a)[6]){...}

是否可以从使用gcc -g编译源文件时获得的矮信息(嵌入在生成的.o文件中)中提取参数'a'的实际数组大小信息'6'?

我在目标文件上应用'readelf -wi'来获取矮信息,但我找不到任何信息来获得固定的数组大小。

1 个答案:

答案 0 :(得分:1)

使用Fedora 20系统gcc对我来说没问题。无论它是否适用于其他版本的gcc,我都不知道......我不记得这方面的具体变化,但gcc确实发生了很大的变化。

无论如何,我使用gcc -g编译了一个类似上面的代码片段。然后我用" readelf -wi"检查了它。这会转储DWARF信息。我明白了:

 <1><57>: Abbrev Number: 4 (DW_TAG_array_type)
    <58>   DW_AT_type        : <0x6e>   
    <5c>   DW_AT_sibling     : <0x67>   
 <2><60>: Abbrev Number: 5 (DW_TAG_subrange_type)
    <61>   DW_AT_type        : <0x67>   
    <65>   DW_AT_upper_bound : 5        

...作为参数的类型&#34; a&#34;。那里的子范围类型显示了边界。