Passing a -mcpu=xxx option after a regular argument (a filename), when an equivalent -mcpu=xxx option was specified earlier, causes gnatmake to fail: $ gnatmake -mcpu=7400 hello -o hello.exe -bargs -mcpu=7400 rtems_init.o Exception name: SYSTEM.ASSERTIONS.ASSERT_FAILURE Message: make.adb:7473 gnatmake: INTERNAL ERROR. Please report. $ powerpc-rtems4.11-gnatmake -mcpu=7400 hello -o hello.exe -bargs -mcpu=7400 rtems_init.o Exception name: SYSTEM.ASSERTIONS.ASSERT_FAILURE Message: make.adb:7473 gnatmake: INTERNAL ERROR. Please report. Removing either -mcpu=7400 option allows for compilation, and the resulting executable works. I found this bug when compiling an RTEMS sample program which for some reason specified many arguments twice (-bargs, -D__ppc_generic, etc.). However, I believe that issue was related to my environment at the time, since I haven't been able to recreate it.
$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/export/home/rtems-4.11/bin/../libexec/gcc/i386-pc-solaris2.10/4.5.1/lto-wrapper Target: i386-pc-solaris2.10 Configured with: ../gcc-4.5.1/configure --prefix=/opt/rtems-4.11 --enable-threads=posix --enable-shared --disable-nls --with-system-zlib --with-gnu-as --without-gnu-ld --with-ld=/usr/ccs/bin/ld --enable-languages=c,c++,ada,java --with-ecj-jar=/opt/rtems-4.11/ecj.jar Thread model: posix gcc version 4.5.1 (GCC) $ powerpc-rtems4.11-gcc -v Using built-in specs. COLLECT_GCC=powerpc-rtems4.11-gcc COLLECT_LTO_WRAPPER=/export/home/rtems-4.11/bin/../libexec/gcc/powerpc-rtems4.11/4.5.1/lto-wrapper Target: powerpc-rtems4.11 Configured with: ../gcc-4.5.1/configure --enable-threads=rtems --with-gnu-as --with-gnu-ld --enable-multilib --enable-newlib-mb --enable-newlib-iconv --verbose --with-system-zlib --disable-nls --with-newlib --target=powerpc-rtems4.11 --enable-version-specific-runtime-libs --prefix=/opt/rtems-4.11 CFLAGS_FOR_TARGET=-B/opt/rtems-4.11/powerpc-rtems4.11/beatnik/lib/ --enable-languages=ada,c,c++,java Thread model: rtems gcc version 4.5.1 (GCC)
It seems the command line I specified above may be incorrect, though it does exhibit the same error. See here for the full command: http://www.rtems.com/ml/rtems-users/2010/july/msg00038.html > powerpc-rtems4.11-gcc --pipe -B/home//b/rtems-testing//install-4.5.0/powerpc-rtems4.11/beatnik/lib/ -specs bsp_specs -qrtems -mcpu=7400 -D__ppc_generic -Dbeatnik -I. -mcpu=7400 -D__ppc_generic -c ../rtems_init.c > powerpc-rtems4.11-gnatmake -mcpu=7400 -D__ppc_generic -g -v \ > -I/home//b/rtems-testing/install-4.5.0/powerpc-rtems4.11/beatnik//lib/include/adainclude \ > -O -gnata -gnatE -gnato -g hello -o hello.exe \ > -bargs -Mgnat_main \ > -largs -B/home//b/rtems-testing/install-4.5.0/powerpc-rtems4.11/beatnik//lib/ -specs=bsp_specs -qrtems -mcpu=7400 -D__ppc_generic -Dbeatnik \ > rtems_init.o \ > > Exception name: SYSTEM.ASSERTIONS.ASSERT_FAILURE > Message: make.adb:7473 > > powerpc-rtems4.11-gnatmake: INTERNAL ERROR. Please report.
.