2

在过去的几年里,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 ,但我所有未使用的类型也会出现,这会增加目标文件的大小。

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

4

1 回答 1

0

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

于 2016-03-30T18:05:47.910 回答