Как получить деструкторы C ++ в проход LLVM? - PullRequest
0 голосов
/ 11 сентября 2018

Имена деструкторов класса C ++ будут разобраны во время компиляции. Например, имя деструктора класса student будет скомпилировано во что-то вроде _ZN7studentD2Ev. Так что я не знаю точных названий деструкторов классов. Я хотел бы сделать некоторый анализ и преобразование деструкторов. Есть ли способ получить все деструкторы классов программы на C ++ в проходе LLVM IR (или проходе машины)?

1 Ответ

0 голосов
/ 12 сентября 2018

Вы можете попытаться угадать на основе искажения имени.

В соответствии с C ++ ABI , имена деструкторов закодированы с использованием одной из следующих схем:

  • Деструктор удаления D0
  • Деструктор полного объекта D1
  • Деструктор базового объекта D2

Затем следует тип функции , что в случае деструкторов Ev.

Это может сработать для вас, но имейте в виду, что это не кроссплатформенное решение.

Может быть, лучше, правильнорешение для вашего вопроса, но я не знаю об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...