带有--incremental flag的gold链接器不适用于目标i386

时间:2014-02-19 10:25:32

标签: i386 incremental-linking

我正在使用binutils-2.24中的 Gold链接器来链接目标应用程序:i686-pc-linux-gnu。

当我在i686-pc-linux-gnu机器上运行Gold时出现虚拟内存错误,所以我在x86_64-linux-gnu主机上构建它(以获得更多虚拟内存),我就是在这台机器上运行它,但是我用它来链接我的目标应用程序:i686-pc-linux-gnu。

第一个链接成功 - 我还没有可执行文件 - 所以Gold恢复到--incremental-full,我得到一个可运行的可执行文件,我可以在我的i686-pc-linux-gnu机器上成功运行:< / p>

  

gold-ld -o stam32 -dynamic-linker /lib/ld-linux.so.2 -L / usr / lib32 /usr/lib32/crti.o /usr/lib32/crtn.o / usr / lib32 / crt1.o main.o try.o -lc --incremental

* stam32:stat:没有这样的文件或目录 链接--incremental-full *

第二个链接失败,出现以下错误:

  

../ objs-binutils-2.24 / gold / ld -o stam32 -dynamic-linker /lib/ld-linux.so.2 -L / usr / lib32 /usr/lib32/crti.o / usr / lib32 /crtn.o /usr/lib32/crt1.o main.o try.o -lc --incremental

../ objs-binutils-2.24 / gold / ld:init_got_plt_for_update中的内部错误,位于../../ binutils-2.24 / gold / target.h:949

我查看了源代码,发现“init_got_plt_for_update”仅适用于 x86_64和tilegx。对于其他目标,init_got_plt_for_update只需调用gold_unreachable(),它会以错误退出黄金。

另一方面 - 有一个关于Gold的增量链接(https://video.linux.com/videos/incremental-linking-with-gold)的整个讲座,并且在那里特别提到i386,作为Gold支持的目标,并且发言者没有提及关于使用的任何限制 - i386目标的增量标志(据我所知i686-pc-linux-gnu是i386目标)。

所以有人知道为什么我的增量链接会失败吗?

提前致谢, Galit Keret

1 个答案:

答案 0 :(得分:0)

在binutils邮件列表中询问并回答:

目前还没有针对黄金i386目标的增量链接支持。