我正在使用-ffunction-sections编译一些代码,所以每个函数都在它自己的部分中,如果不使用它就可以被丢弃。
然后,我通过使用-r和--gc-sections在链接阶段生成一个新的可重定位目标文件来丢弃未使用的函数。
但是,当我最终将生成的对象链接到可执行文件时,链接器会报告:
“ld:myobject.o(.eh_frame + 0x7f0):重新定位` UND ':错误2”
我认为这是因为符号被丢弃但仍然被.eh_frame引用。我注意到错误有时也可以用节名而不是“ UND ”报告,其中节名是未定义符号的名称,用于在删除之前引用该节但我不知道为什么会出现两种不同的方式。
我该如何解决这个问题(例如,可能删除仅包含无法解析的重定位的.eh_frame条目)?