I looked for a "Component" for 'libgcc' but there is no such category so I chose 'inline-asm' as this is an "extra underscore issue" with '.s' files.
# gcc/xgcc -v Using built-in specs. Target: i386-pc-solaris2.11 Configured with: ../gcc_trunk/configure --enable-languages=ada,c,c++,fortran,java,objc,obj-c++ --enable-shared --disable-static --enable-decimal-float --with-long-double-128 --with-included-gettext --enable-stage1-checking --enable-checking=release --with-tune=k8 --with-cpu=k8 --with-arch=k8 --with-gnu-as --with-as=/usr/local/bin/as --with-gnu-ld --with-ld=/usr/local/bin/ld Thread model: posix gcc version 4.4.0 20090131 (experimental) [trunk revision 143817] (GCC) Note: I use GNU's 'ld' on OpenSolaris. When I run "make -i check" I get this: ... Running /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/torture/dg-torture.exp ... FAIL: gcc.dg/torture/fp-int-convert-float128.c -O0 (test for excess errors) WARNING: gcc.dg/torture/fp-int-convert-float128.c -O0 compilation failed to produce executable FAIL: gcc.dg/torture/fp-int-convert-float128.c -O1 (test for excess errors) WARNING: gcc.dg/torture/fp-int-convert-float128.c -O1 compilation failed to produce executable FAIL: gcc.dg/torture/fp-int-convert-float128.c -O2 (test for excess errors) WARNING: gcc.dg/torture/fp-int-convert-float128.c -O2 compilation failed to produce executable FAIL: gcc.dg/torture/fp-int-convert-float128.c -O3 -fomit-frame-pointer (test for excess errors) WARNING: gcc.dg/torture/fp-int-convert-float128.c -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gcc.dg/torture/fp-int-convert-float128.c -O3 -g (test for excess errors) WARNING: gcc.dg/torture/fp-int-convert-float128.c -O3 -g compilation failed to produce executable FAIL: gcc.dg/torture/fp-int-convert-float128.c -Os (test for excess errors) WARNING: gcc.dg/torture/fp-int-convert-float128.c -Os compilation failed to produce executable ... I tried to compile the Testsuite case "gcc.dg/torture/fp-int-convert-float.c" by hand to investigate these errors: Executing on host: /usr/share/src/gcc_build/gcc/xgcc -B/usr/share/src/gcc_build/gcc/ /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/torture/fp-int-convert-float128.c -O0 -lm -o ./fp-int-convert-float128.exe (timeout = 300) /var/tmp//cc_XaqHO.o: In function `main': fp-int-convert-float128.c:(.text+0x3a): undefined reference to `__floatsitf' fp-int-convert-float128.c:(.text+0x5a): undefined reference to `__fixtfsi' fp-int-convert-float128.c:(.text+0xa1): undefined reference to `__netf2' ... fp-int-convert-float128.c:(.text+0xa5f3): undefined reference to `__netf2' collect2: ld returned 1 exit status FAIL: gcc.dg/torture/fp-int-convert-float128.c -O3 -fomit-frame-pointer (test for excess errors) Excess errors: ... fp-int-convert-float128.c:(.text+0xa4f8): undefined reference to `__floatunditf' fp-int-convert-float128.c:(.text+0xa516): undefined reference to `__fixunstfdi' fp-int-convert-float128.c:(.text+0xa598): undefined reference to `__netf2' WARNING: gcc.dg/torture/fp-int-convert-float128.c -O3 -fomit-frame-pointer compilation failed to produce executable Where are those functions and what are they called: # find /usr/share/src/gcc_build/i386-pc-solaris2.11/ -name *floatunditf* /usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libgcc/_floatunditf_s.o /usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libgcc/_floatunditf.o /usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libgcc/_floatunditf.dep /usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libgcc/_floatunditf_s.dep /usr/share/src/gcc_build/i386-pc-solaris2.11/libgcc/_floatunditf.dep /usr/share/src/gcc_build/i386-pc-solaris2.11/libgcc/_floatunditf.o /usr/share/src/gcc_build/i386-pc-solaris2.11/libgcc/_floatunditf_s.dep /usr/share/src/gcc_build/i386-pc-solaris2.11/libgcc/_floatunditf_s.o Failing Command: /usr/share/src/gcc_build/gcc/xgcc -B/usr/share/src/gcc_build/gcc/ /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/torture/fp-int-convert-float128.c -O3 -g -lm -o ./fp-int-convert-float128.exe Working Command (Note that I add -lgcc to provoke the linker): # /usr/share/src/gcc_build/gcc/xgcc -B/usr/share/src/gcc_build/gcc/ /usr/share/src/gcc_trunk/gcc/testsuite/gcc.dg/torture/fp-int-convert-float128.c /usr/share/src/gcc_trunk/gcc/config/soft-fp/floatunditf.c /usr/share/src/gcc_trunk/gcc/config/soft-fp/floatunsitf.c /usr/share/src/gcc_trunk/gcc/config/soft-fp/floatsitf.c /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfdi.c /usr/share/src/gcc_trunk/gcc/config/soft-fp/floatditf.c /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfdi.c /usr/share/src/gcc_trunk/gcc/config/soft-fp/eqtf2.c -I/usr/share/src/gcc_trunk/gcc/config/i386/ -I/usr/share/src/gcc_trunk/libgcc/ -I/usr/share/src/gcc_trunk/gcc/ -O0 -lm -lgcc -o ./fp-int-convert-float128.exe /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c: In function __fixtfsi: /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixtfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c: In function __fixunstfsi: /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c:42: warning: left shift count >= width of type /usr/share/src/gcc_trunk/gcc/config/soft-fp/fixunstfsi.c:42: warning: left shift count >= width of type # # ./fp-int-convert-float128.exe # Works. Even though I used "-lgcc" there was no 'collision' between the various "conversion functions". The unwanted underscores hide them. I used the soft-fp "C" source files instead of relying on the double underscored versions of these functions that are in libgcc and was able to hand-compile and run ./fp-int-convert-float128.exe . The Testsuite tests for these "conversion functions" could work if they were fixed. These files might have first been discussed here: http://gcc.gnu.org/ml/gcc-patches/2006-05/msg00968.html . Rob -- Summary: gcc 4.4.0 20090131 - Extra underscore hides libgcc's soft-fp functions from Testsuite causing FAILs + naming error in libgcc Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: inline-asm AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rob1weld at aol dot com GCC build triplet: i386-pc-solaris2.11 GCC host triplet: i386-pc-solaris2.11 GCC target triplet: i386-pc-solaris2.11 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39048