假设一个C模块包含以下函数定义:
void foo(int (*a)[6]){...}有没有可能从用gcc -g编译源文件时获得的dwarf信息(嵌入到生成的.o文件中)中提取参数'a‘的实际数组大小信息'6’?
我已经在目标文件上应用了'readelf -wi‘来获取dwarf信息,但是我找不到任何信息来派生固定的数组大小。
发布于 2014-06-05 10:34:22
在我使用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 ..。参数"a“的类型。那里的子范围类型显示了边界。
https://stackoverflow.com/questions/23984098
复制相似问题