2014-02-19 9 views
2

Я использую Gold linker от binutils-2.24 для ссылки на приложение для цели: i686-pc-linux-gnu.золотой линкер с флагом -incremental не работает для цели i386

У меня ошибка виртуальной памяти, когда я запускал Gold на моем компьютере i686-pc-linux-gnu, поэтому я построил его на хосте x86_64-linux-gnu (чтобы получить больше виртуальной памяти) m запускает его и на этом компьютере, но я использую его для привязки своего приложения к цели: i686-pc-linux-gnu.

Первая ссылка успешна - у меня еще нет исполняемого файла - поэтому Gold возвращается к -incremental-full, и я получаю рабочий исполняемый файл, который я могу успешно запустить на моем компьютере i686-pc-linux-gnu:

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: стат: Нет такого файла или каталога связь с --incremental набитый *

Вторая ссылка не может со следующей ошибкой:

../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(), который выдает золото с ошибкой.

С другой стороны, здесь есть целая лекция по инкрементной привязке золота (https://video.linux.com/videos/incremental-linking-with-gold), а i386 упоминается там как цель, поддерживаемая Голдом, и говорящий не упоминает никаких ограничений относительно использования --incremental flag с i386 (и насколько я знаю, i686-pc-linux-gnu - цель i386).

Так кто-нибудь знает, почему моя инкрементная привязка терпит неудачу?

Спасибо заранее, Галит Кереть

ответ

0

Спросил и ответил в BinUtils списке рассылки:

Там в настоящее время нет дополнительных ссылок поддержка i386 цели золота.