首页 > 解决方案 > 如何在 LLVM 通行证中获取 C++ 析构函数?

问题描述

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

标签: c++llvm

解决方案


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

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

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

然后是函数类型,在析构函数的情况下是Ev

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

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


推荐阅读