我需要在我的LLVM傳遞中識別虛擬函數調用站點,並識別可能在運行時調用的候選函數。在llvm中識別虛擬呼叫站點
class B
{
virtual void F() { // do something }
};
class D : public B
{
void F() { // do something else }
};
B* d = new D();
d->F();
例如,對於給定的層次結構和F調用,將B :: F和D :: F都標識爲可能的候選者。
在尋找解決方案時,我遇到了Clang CFI(控制流集成),他們說他們正在通過檢查它是否在一組候選虛擬表指針中來識別虛擬表指針是否有效。因此,我假設有一種方法可以獲得有關繼承層次結構的信息。但是我無法找到如何在llvm中完成這件事。
那麼,有沒有人有一個想法如何做到這一點?