是否可以为链接器开发 GCC 插件?
Is it possible to develop GCC plugins for the linker?
我正在开发一个 GCC 插件,用于在每个函数的特定位置 插入自定义汇编指令,例如在 return 语句的最开始或之前。该插件注册为在 RTL 传递期间执行,原则上工作正常。
现在我的问题是,使用这种方法我只能检测我拥有完整源代码的程序,即没有库,因为它们只链接到应用程序而不是我编译的(这只是关于静态的链接;动态链接是另一个主题)。
有没有一种方法可以使用自定义插件在链接器级别 执行优化,类似于我在编译器级别所做的?我知道在链接过程中会进行某些优化,但我找不到关于这个问题的任何资源 if/how 我想做的事情是完全可能的。
谢谢!
在链接器级别优化有两种可能性:
第一个是 lto。 https://gcc.gnu.org/wiki/LinkTimeOptimization。在这种情况下,它将是一个 rtl pass,将在一个模块上调用。
如果您的目标支持,第二个选项是使用链接器松弛。根据放宽信息可以插入或删除指令
我正在开发一个 GCC 插件,用于在每个函数的特定位置 插入自定义汇编指令,例如在 return 语句的最开始或之前。该插件注册为在 RTL 传递期间执行,原则上工作正常。
现在我的问题是,使用这种方法我只能检测我拥有完整源代码的程序,即没有库,因为它们只链接到应用程序而不是我编译的(这只是关于静态的链接;动态链接是另一个主题)。
有没有一种方法可以使用自定义插件在链接器级别 执行优化,类似于我在编译器级别所做的?我知道在链接过程中会进行某些优化,但我找不到关于这个问题的任何资源 if/how 我想做的事情是完全可能的。
谢谢!
在链接器级别优化有两种可能性:
第一个是 lto。 https://gcc.gnu.org/wiki/LinkTimeOptimization。在这种情况下,它将是一个 rtl pass,将在一个模块上调用。
如果您的目标支持,第二个选项是使用链接器松弛。根据放宽信息可以插入或删除指令