我正在尝试编写一个 GCC 插件,对它编译的程序进行一些特定于域的分析。我想知道将分析结果作为某种元数据(如调试信息)嵌入到生成的目标文件中的最佳方法。
理想情况下,一些元数据(在我的例子中是文本)应该嵌入到每个对象文件中,链接器应该保留它链接的所有对象的数据,最后我应该有某种方法来访问最终二进制文件中的所有元数据,objdump
使用readelf
或类似的。
我目前的想法是尝试通过将其添加到 GIMPLE AST 来为每个编译单元添加一个唯一命名的全局字符串变量。但是,我想知道是否有更“有纪律”的方式;插件如何生成调试信息或其他此类元数据?