首页 > 解决方案 > 是否可以为链接器开发 GCC 插件?

问题描述

我正在开发一个GCC 插件,用于在每个函数的特定位置插入自定义汇编指令,例如在返回语句的最开始或之前。该插件已注册为在 RTL 传递期间执行,并且原则上可以正常工作。

现在我的问题是,使用这种方法我只能检测我有完整源代码可用的程序,即没有库,因为这些程序只链接到应用程序中而不是由我编译(这只是关于静态链接;动态链接是一个不同的主题)。

有没有办法使用自定义插件在链接器级别执行优化,类似于我在编译器级别所做的事情?我知道在链接过程中会发生某些优化,但是我找不到任何关于我想要做的事情是否/如何可能的问题的资源。

谢谢!

标签: gccpluginslinkerregister-transfer-level

解决方案


在链接器级别有两种优化的可能性:
第一种是 lto。https://gcc.gnu.org/wiki/LinkTimeOptimization。在这种情况下,它将是一个 rtl pass,它将在一个模块上调用。
如果您的目标支持,第二个选项是使用链接器松弛。根据放松信息,您可以插入或删除指令


推荐阅读