2015-08-15 33 views
6

我正試圖編寫一個程序,該程序使用Clang列出了C或C++程序的所有公開導出的變量和函數。如何獲取使用Clang的C/C++程序的全局聲明列表?

我跟着this tutorial的05部分,但它不適用於當前版本的鏗鏘聲。在此之上,我得到some hintsCompilerInstance可以使代碼更短,但我不完全確定如何使用它。

您將如何實現此功能?你能給我任何指向正確方向的指針嗎?例如:是否有一個全局聲明變量的大型哈希表,還是必須遍歷AST?

+1

對於使用Clang作爲庫的最新代碼示例,請參閱https://github.com/eliben/llvm-clang-samples –

回答

0

我找到了一種方法。結果是AutoFFI,一個建立在Clang之上的FFI綁定生成器。如果我有時間,我會公佈詳細信息。

2

公開出口 - 你的意思是帶外部鏈接的符號嗎?

您可以在對象文件,共享庫和可執行文件上使用nm--extern-only --defined-only --demangle選項來顯示具有外部鏈接的已定義符號。符號類型字段告訴你它是什麼類型的符號,全局變量通常具有類型B,b,C,D,d,G,g,R,r,S,s和W,w用於聲明的模板的靜態數據成員頭文件和函數範圍靜態。

+0

是的,的確如此。但是我想直接從源代碼中找到符號列表,這樣我就可以篡改它們。 – samvv