如何在LLVM传递中获取C ++析构函数?

时间:2018-09-11 20:00:17

标签: c++ llvm

在编译过程中,将对C ++类析构函数的名称进行解密。例如,类student的析构函数的名称将被编译为类似_ZN7studentD2Ev的名称。所以我不知道类析构函数的确切名称。我想对析构函数进行一些分析和转换。 有没有办法在LLVM IR传递(或Machine Pass)中获取C ++程序的所有类析构函数?

1 个答案:

答案 0 :(得分:1)

您可以尝试根据名称修饰来猜测。

根据C++ ABI,使用以下方案之一的析构函数encoded的名称:

  • D0删除析构函数
  • D1完整对象析构函数
  • D2基础对象析构函数

然后跟随function type,在析构函数的情况下为Ev

这可能对您有用,但是请注意,它不是跨平台的解决方案。

对于您的问题可能有更好,更合适的解决方案,但我不知道。