GCC,重复的typedef和DWARF

时间:2016-03-28 12:39:00

标签: c gcc dwarf gcc4.8

在过去几年中,GCC允许重复的typedef,只要它们彼此兼容即可。我面临的问题是使用DWARF调试扩展:似乎GCC(v4.8)将重复的typedef标记为未使用,并且不将它们包含在DWARF中。

示例:

typedef struct yyx yyx_handle;
typedef struct yyx yyx_handle;

yyx_handle *get_yyx(void *p)
{ return (yyx_handle *)p; }

结果:

$ gcc -o f1.o -c f1.c -g
$ readelf --debug-dump f1.o | grep yyx_handle | wc -l
0

如果我添加-fno-eliminate-unused-debug-types,则会包含typedef,但随后会显示所有未使用的类型,从而炸毁目标文件大小。

显而易见的解决方案是删除重复的定义,但这并不总是实用的。还有其他建议吗?

1 个答案:

答案 0 :(得分:0)

我认为这只是一个gcc bug。我建议将其报告给GCC Bugzilla。