2016-03-28 95 views
1

在過去幾年中,只要GCC相互兼容,就允許重複typedefs。我面臨的問題是DWARF調試擴展:看來GCC(v4.8)將重複的typedefs標記爲未使用,並且不包含在DWARF中。GCC,重複類型定義和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的,但後來我的所有未使用的類型的出現爲好,炸燬目標文件的大小。

顯而易見的解決方案是刪除重複的定義,但這並不總是實用。還有其他建議嗎?

+0

你的問題顯然有一個錯字 - typedefs是*相同*。然而,你的問題聽起來好像'typedef'd *名字*不同? 'yyx_handle'在這裏絕對不是沒用的? – tofro

+0

在示例中使用'yyx_handle'。如果我刪除了typedef的一個出現,那麼它運行良好。 – Freezer

回答

0

我認爲這只是一個海灣合作委員會的錯誤。我建議將其報告給GCC Bugzilla。

+0

如果你不確定,這將更適合作爲評論。 – alk