如何执行可重定位链接,丢弃未使用的函数而不破坏.eh_frame

时间:2015-02-06 00:23:00

标签: c++ gcc ld

我正在使用-ffunction-sections编译一些代码,所以每个函数都在它自己的部分中,如果不使用它就可以被丢弃。

然后,我通过使用-r和--gc-sections在链接阶段生成一个新的可重定位目标文件来丢弃未使用的函数。

但是,当我最终将生成的对象链接到可执行文件时,链接器会报告:

“ld:myobject.o(.eh_frame + 0x7f0):重新定位` UND ':错误2”

我认为这是因为符号被丢弃但仍然被.eh_frame引用。我注意到错误有时也可以用节名而不是“ UND ”报告,其中节名是未定义符号的名称,用于在删除之前引用该节但我不知道为什么会出现两种不同的方式。

我该如何解决这个问题(例如,可能删除仅包含无法解析的重定位的.eh_frame条目)?

0 个答案:

没有答案