【发布时间】:2017-04-24 20:00:45
【问题描述】:
我需要在我的 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 中完成此操作。
那么有人知道如何做到这一点吗?
【问题讨论】:
标签: c++ llvm llvm-clang llvm-ir