gpt4 book ai didi

c++ - 如何在 LLVM pass 中的模块末尾插入函数调用?

转载 作者:行者123 更新时间:2023-11-30 03:34:23 36 4
gpt4 key购买 nike

我的通行证在某些点插入函数,这些函数收集一些信息。在模块的末尾,我想显示我长期以来收集的所有内容,因此我想在模块的末尾插入一个函数,为我完成打印工作。我无法检测到模块的末尾以在它之前插入函数。帮助和指导将不胜感激!

最佳答案

我认为没有简单的方法可以做到这一点。您需要在代码中寻找两种退出点。

1) 代码可以调用 exit() 之类的函数,这将是程序的退出点。所以你需要在传递中寻找那些并在它们之前插入你的函数调用。如果您不想麻烦检查代码中的每条指令,那么您可以手动将代码函数中对 exit() 的调用替换为新的退出函数(类似于 exit_()),它包含对您要调用的函数的调用,然后是对 exit() 函数的实际调用。后一种方法要求您事先有权访问代码。

2)程序会在入口函数(通常是main)结束时退出。因此,您可以检查函数名称是否与潜在入口函数相同,并在 return 语句之前插入函数调用。如果它没有 return 语句,则将其插入到所有指令的末尾。

关于c++ - 如何在 LLVM pass 中的模块末尾插入函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42110887/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com