2016-03-28 19 views
1

過去数年間、GCCは相互に互換性がある限り、重複したtypedefを許可しました。私が直面している問題は、DWARFデバッグ拡張機能です:GCC(v4.8)は重複するtypedefを未使用としてマークし、DWARFにそれらを含めていないようです。GCC、重複したtypedefs、およびDWARF

例:

typedef struct yyx yyx_handle; 
typedef struct yyx yyx_handle; 

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

結果:私は-fno-eliminate-unused-debug-typesを追加する場合

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

のtypedefが含まれているが、その後のすべての私の未使用のタイプは、オブジェクト・ファイルのサイズを爆破、同様に表示されます。

明らかな解決策は、重複する定義を削除することですが、それは必ずしも実用的ではありません。その他の提案はありますか?

+0

あなたの質問に明らかにタイプミスがあります。 - typedefsは* same *です。あなたの質問は、 'typedef'd * names *が異なっているかのように聞こえますか? 'yyx_handle'はここでは使われていませんか? – tofro

+0

例では 'yyx_handle'が使用されています。typedefの1つのオカレンスを削除するとうまく動作します。 – Freezer

答えて

0

これは単なるgccバグだと思います。 GCC Bugzillaに報告することをお勧めします。

+0

あなたがよくわからない場合は、これはコメントとして適しています。 – alk

関連する問題