This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug inline-asm/39048] New: gcc 4.4.0 20090131 - Extra underscore hides libgcc's soft-fp functions from Testsuite causing FAILs + naming error in libgcc
- From: "rob1weld at aol dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 31 Jan 2009 17:48:16 -0000
- Subject: [Bug inline-asm/39048] New: gcc 4.4.0 20090131 - Extra underscore hides libgcc's soft-fp functions from Testsuite causing FAILs + naming error in libgcc
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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