GCC似乎在进行优化,将合并了相同后缀的字符串文字组合在一起。
例如,一个包含两个字符串文字"foo bar"并"bar"可以最终ELF形式结束的C程序(1)将字符串表更改为具有单个字符串文字,"foo bar"以及(2)将该程序更改为将任何指针"bar"都转换为现在指向的4字符入弦"foo bar"。请注意,从仅向前读取C程序的角度来看,第二个文字仍然看起来像"bar"。
虽然我认为这是一种压缩字符串集合而不增加ELF文件格式复杂性的聪明方案,但是出于深奥的原因,这也给我带来了麻烦(在后期处理ELF文件并对其进行各种分析时)。如何关闭GCC的此功能?