Bug 45298 - GNATMake fails with multiple, equal -mcpu options
Summary: GNATMake fails with multiple, equal -mcpu options
Status: RESOLVED WORKSFORME
Alias: None
Product: gcc
Classification: Unclassified
Component: ada (show other bugs)
Version: 4.5.1
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-08-16 13:42 UTC by Michael Gurlitz
Modified: 2015-12-06 09:43 UTC (History)
4 users (show)

See Also:
Host: i386-pc-solaris2.10
Target: i386-pc-solaris2.10, powerpc-rtems4.11
Build: i386-pc-solaris2.10
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Gurlitz 2010-08-16 13:42:28 UTC
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.
Comment 1 Michael Gurlitz 2010-08-16 13:44:48 UTC
$ 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)
Comment 2 Michael Gurlitz 2010-08-16 14:05:20 UTC
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.
Comment 3 Eric Botcazou 2015-12-06 09:43:13 UTC
.