gcc - 是否可以为链接器开发 GCC 插件?
问题描述
我正在开发一个GCC 插件,用于在每个函数的特定位置插入自定义汇编指令,例如在返回语句的最开始或之前。该插件已注册为在 RTL 传递期间执行,并且原则上可以正常工作。
现在我的问题是,使用这种方法我只能检测我有完整源代码可用的程序,即没有库,因为这些程序只链接到应用程序中而不是由我编译(这只是关于静态链接;动态链接是一个不同的主题)。
有没有办法使用自定义插件在链接器级别执行优化,类似于我在编译器级别所做的事情?我知道在链接过程中会发生某些优化,但是我找不到任何关于我想要做的事情是否/如何可能的问题的资源。
谢谢!
解决方案
在链接器级别有两种优化的可能性:
第一种是 lto。https://gcc.gnu.org/wiki/LinkTimeOptimization。在这种情况下,它将是一个 rtl pass,它将在一个模块上调用。
如果您的目标支持,第二个选项是使用链接器松弛。根据放松信息,您可以插入或删除指令
推荐阅读
- python - folium.Marker 无法正确解码
- c - 多级“结构继承”是否保证可以在任何地方工作?
- java - HQL如何以对象列表为一组条件查询表?
- javascript - 使用 redux 获取树形图的数据
- reactjs - react-select async 持久选择选项
- inno-setup - 是否可以在 Inno Setup 中执行其他应用程序时启用单击安装页面?
- reactjs - 更改浏览器地址栏中的路线,但没有任何变化
- node.js - 组件中的角度变量未在模板中呈现
- reactjs - 代码覆盖 Cypress 和 Storybook,无法检测我的代码
- tensorflow - Keras 功能 API 中的“无法计算输出张量”错误