Почему cross gcc вызывает native 'as'? - PullRequest
1 голос
/ 06 августа 2011

Я нахожусь в процессе создания набора инструментов ps2 (playstation 2) для OSX с использованием существующего сценария, который в прошлом работал нормально для Linux / Windows, но всегда вызывал проблемы в OSX.

Проблема Iсейчас я сталкиваюсь с тем, что попадаю в точку, где cross gcc, по-видимому, вызывает нативный 'as' вместо существующего cross 'as':

ee-gcc -B / Users / gilligan /ps2toolchain / build / newlib-1.10.0 / build-ee / ee / newlib / -isystem /Users/gilligan/ps2toolchain/build/newlib-1.10.0/build-ee/ee/newlib/targ-include -isystem / Users/gilligan/ps2toolchain/build/newlib-1.10.0/newlib/libc/include -DPACKAGE = \ "newlib \" -DVERSION = \ "1.10.0 \" -I.-I ../../../../../ newlib / libc / stdlib -O2 -DMALLOC_ALIGNMENT = 16 -DMISSING_SYSCALL_NAMES -I ../../ targ-include -I ../../../../../newlib/libc/../libc/include -fno-builtin -G0 -g -c ../../../../../newlib/libc/stdlib/__adjust.c ee-gcc -B / Users / gilligan / ps2toolchain / build / newlib-1.10.0 / build-ee / ee / newlib / -isystem /Users/gilligan/ps2toolchain/build/newlib-1.10.0/build-ee/ ee / newlib / targ-include -isystem /Users/gilligan/ps2toolchain/build/newlib-1.10.0/newlib/libc/include -DPACKAGE = \ "newlib \" -DVERSION = \ "1.10.0 \" -I,-I ../../../../../ newlib / libc / stdlib -O2 -DMALLOC_ALIGNMENT = 16 -DMISSING_SYSCALL_NAMES -I ../../ targ-include -I ../../../../../newlib/libc/../libc/include -fno-builtin -G0 -g -c ../../../../../newlib/libc/stdlib/__exp10.c FATAL: / usr / bin /../ libexec / gcc / darwin / x86_64 / as: Я не понимаю флаг 'G'!make [3]: * [__exp10.o] Ошибка 1 make [3]: * Ожидание незавершенных заданий .... FATAL: / usr / bin /../ libexec / gcc / darwin / x86_64/ as: я не понимаю флаг 'G'!make [3]: * [__adjust.o] Ошибка 1 make [2]: [все-рекурсивная] ошибка 1 make [1]: [все-рекурсивно]Ошибка 1 make: * [all-target-newlib] Ошибка 2

Здесь следует обратить внимание (извините, не очень читабельно), что ee-gcc вызывает'as' из / usr / bin /../ libexec / gcc / darwin / x86_64 / as , то есть системный, а не ee-as.Как это может быть?

Проверка вывода ' ee-gcc -print-search-dirs ' Я вижу, что ee-as действительно находится в одном из указанных путей, и я проверилчто он является исполняемымродной.Как работает двоичный выбор ассемблера?

ОБНОВЛЕНИЕ Спасибо за ввод, но я боюсь, что все это более сломано, чем первоначально предполагалось.Теперь gcc (llvm-gcc-4.2) работает с ошибками при обработке libgcc2.c

/ Users / gilligan / Development / ps2dev / ps2toolchain / build / gcc-3.2.2 / build-ee-stage1 /gcc / xgcc -B / Users / gilligan / Development / ps2dev / ps2toolchain / build / gcc-3.2.2 / build-ee-stage1 / gcc / -B / usr / local / ps2dev / ee // ee / bin / -B/ usr / local / ps2dev / ee // ee / lib / -isystem / usr / local / ps2dev / ee // ee / include -O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-прототипы -isystem ./include -G 0 -g -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I.-Я.-I ../../ gcc -I ../../ gcc /.-I ../../ gcc / config -I ../../ gcc /../ include -DL_muldi3 -c ../../gcc/libgcc2.c -o libgcc /./_ muldi3.o Inфайл включен из ../../gcc/libgcc2.c:44: ../../gcc/libgcc2.h:242: внутренняя ошибка: ошибка сегментации: 11 Пожалуйста, отправьте полный отчет об ошибке, с предварительно обработанным источником, если необходимо,Смотрите инструкции.make [2]: * [libgcc /./_ muldi3.o] Ошибка 1 make [1]: [libgcc.a] Ошибка 2 make: ** [all-gcc]Ошибка 2

Я начал поискать сообщения об ошибках / патчи, но пока без кубиков.Думаю, я собираюсь сдаться. Еще раз спасибо за вклад.

1 Ответ

1 голос
/ 06 августа 2011

Разрешение пути ассемблера AFAIK в спецификации машины

 gcc -dumpspecs

и посмотрите *invoke_as: раздел

Вы можете переопределить спецификации с помощью опции -specs=.

...