2011-08-31 28 views
0

我正在LLVM通道上工作,我對函數指針的調用感興趣。除了知道指針實際指向的是什麼(或者實際上會調用什麼)之外,我還想知道函數指針本身。獲取CallInst的指針?

所以從CallInst::getCalledValue()我可以得到將被調用的函數,我想要的是實際使用的函數指針。

在這個例子中,我想獲得ptr1(地址,變量對象本身,名稱,東西):你不工作的一通

int main() { 
    int (*ptr1)(int) = &f1; 
    ptr1(42); 
    return 0; 
} 
+0

我想我應該補充一點,我期待着我在IR級別之前需要做到這一點。使用RecursiveASTConsumer,我可以很容易地看到這一點,但我沒有任何方法來保存這些信息。 – retval

回答

0

那麼,應該只是修改鐺讓你通過函數指針調用並在某處放置信息。

+0

那麼有一個AnnotationManager工作,類似的東西可能會幫助我。如果我能以某種方式在AST中標記該標記,並且它仍然存在以便通行證尋找它,似乎我可以輕鬆地做到這一點。 – retval