将虚函数的所有返回值映射到相应的返回地址

时间:2017-01-18 11:34:38

标签: c++ clang llvm lto

基本上我想通过添加运行时检查来进行调用者/被调用者映射 在每次C / C ++返回之前检查允许的范围 执行。

我有一个所有虚拟对象分派的转发映射到 允许给定类层次结构的虚拟表条目。 在LLVM LTO期间收集此数据。现在我想做同样的事情 所有虚函数都返回。由于前向映射是有说服力的 我应该访问哪些功能我需要按顺序确定 准确地向后映射以下信息。

  1. 从Clang / LLVM中的哪个位置获取每个的返回地址 包含在虚函数中的return。是否有可能获得 编译期间的这些信息?

  2. 如何确定包含特定回报的函数。 接下来如何确定该函数属于哪个类?

  3. 提前致谢, 保罗

1 个答案:

答案 0 :(得分:0)

是EJP你是正确的,返回地址在运行时被推送到堆栈上但每次返回都应该返回到调用指令旁边的地址,该指令用于调用相应的函数,所以我在想,因为每次返回必须在调用指令之后继续执行(在调用指令之后)应该是在编译期间可以获得的地址。

如果上面的命令与编译器不一致,那么他会在每次调用指令后生成所需信息吗?

期待我的帖子获得合格的精确答案。 :)