Золотой линкер с флагом --incremental не работает для цели i386
Я использую компоновщик Gold из binutils-2.24, чтобы связать приложение для цели: i686-pc-linux-gnu .
Я получил ошибку нехватки виртуальной памяти, когда запустил Gold на своем компьютере i686-pc-linux-gnu, поэтому я собрал его на хосте x86_64-linux-gnu (чтобы получить больше виртуальной памяти) и запускаю его на эта машина также, но я использую ее, чтобы связать свое приложение с целью: 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: 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, и говорящий не упоминает никаких ограничений относительно использования флага --incremental с целями i386 (и, насколько я знаю, i686-pc-linux-gnu является целью i386).
Так кто-нибудь знает, почему мои инкрементные ссылки терпят неудачу?
Заранее спасибо, Галит Керет
1 ответ
На вопрос и ответ в списке рассылки binutils:
В настоящее время нет дополнительной поддержки для цели i386 золота.