This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

bug when compiling libc2.2.5 + linuxthreads with -Os with a gcc 3.2 crosscompiler


Dear Hackers,

I got this message below. I read http://www.gnu.org/software/gcc/bugs.html, and I decided, that it would be much easier to reproduce this bug, if you take my script, and let it run.
I you need some other things [the things described in http://www.gnu.org/software/gcc/bugs.html], then mail me. Please no rtfms, I'm a beginner.

The build is ok, when I build with -O2 . Well, I know that playing with -O is dangerous with libc.

I applied this patch to gcc 3.2 and libc 2.2.5

#> diff -r unpatched/ patched/
diff -r unpatched/gcc-3.2/libjava/java/net/natInetAddress.cc patched/gcc-3.2/libjava/java/net/natInetAddress.cc
59c59
< extern "C" int gethostname (char *name, int namelen);
---
> //extern "C" int gethostname (char *name, int namelen);
diff -r unpatched/glibc-2.2.5/sysdeps/unix/sysv/linux/errlist.c patched/glibc-2.2.5/sysdeps/unix/sysv/linux/errlist.c
40d39
< strong_alias (__old_sys_nerr, _old_sys_nerr);
41a41
> strong_alias (__old_sys_nerr, _old_sys_nerr);

##End of patch

There are three more patches appended, these patches are needed by the build script. Additional information about the build script is at http://www.kegel.com/xgcc3/ .

Many thanks in advance,

Hans-Christian Armingeon

/opt/xgcc3.2/ppc823-Os/bin/powerpc-linux-gcc strcoll.c -c -Os -Wall -Winline -Wstrict-prototypes -Wwrite-strings -mcpu=823 -mnew-mnemonics -Wa,-mppc -mpowerpc  -pg    -I../include -I. -I/usr/src/kegel.com/xgcc3/ppc823-Os/glibc-build/string -I.. -I../libio  -I/usr/src/kegel.com/xgcc3/ppc823-Os/glibc-build -I../sysdeps/powerpc/elf -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/powerpc -I../sysdeps/unix/sysv/linux/powerpc -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/powerpc -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/powerpc -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/powerpc/soft-fp -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic  -nostdinc -isystem /opt/xgcc3.2/ppc823-Os/lib/gcc-lib/powerpc-linux/3.2/include -isystem /usr/src/kegel.com/xgcc3/ppc823-Os/linux/include/ -D_LIBC_REENTRANT -include ../include/libc-symbols.h  -DPROF    -o /usr/src/kegel.com/xgcc3/ppc823-Os/glibc-build/string/strcoll.op
strcoll.c: In function `findidx':
strcoll.c:549: Attempt to delete prologue/epilogue insn:
(insn 666 665 668 (parallel[
            (set (reg:SI 30 r30)
                (mem:SI (plus:SI (reg/f:SI 1 r1)
                        (const_int 24 [0x18])) [1 S4 A8]))
            (set (reg/f:SI 31 r31)
                (mem:SI (plus:SI (reg/f:SI 1 r1)
                        (const_int 28 [0x1c])) [1 S4 A8]))
        ] ) -1 (nil)
    (nil))
strcoll.c:549: Internal compiler error in propagate_one_insn, at flow.c:1615
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[2]: *** [/usr/src/kegel.com/xgcc3/ppc823-Os/glibc-build/string/strcoll.op] Error 1
make[2]: Leaving directory `/data/compilerbau/kegel.com/xgcc3/ppc823-Os/glibc-2.2.5/string'
make[1]: *** [string/subdir_lib] Error 2
make[1]: Leaving directory `/data/compilerbau/kegel.com/xgcc3/ppc823-Os/glibc-2.2.5'
make: *** [all] Error 2

--- sysdeps/powerpc/Makefile.orig	Thu Jun  6 15:34:05 2002
+++ sysdeps/powerpc/Makefile	Thu Jun  6 15:35:00 2002
@@ -3,8 +3,10 @@
 +cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc
 asm-CPPFLAGS += -Wa,-mppc
 
+ifeq ($(with-fp),yes)
 ifeq ($(subdir),math)
 libm-support += fenv_const fe_nomask
+endif
 endif
 
 ifeq ($(subdir),gmon)
--- sysdeps/unix/sysv/linux/init-first.c.orig	Wed Jun  5 14:39:12 2002
+++ sysdeps/unix/sysv/linux/init-first.c	Wed Jun  5 14:39:15 2002
@@ -77,10 +77,12 @@
       /* Set the FPU control word to the proper default value if the
 	 kernel would use a different value.  (In a static program we
 	 don't have this information.)  */
+#ifdef WITH_FP
 #ifdef SHARED
       if (__fpu_control != _dl_fpu_control)
 #endif
 	__setfpucw (__fpu_control);
+#endif
     }
 
   /* Save the command-line arguments.  */
--- configure.in.orig	Thu Jun  6 12:57:53 2002
+++ configure.in	Thu Jun  6 13:00:59 2002
@@ -1579,6 +1579,10 @@
 AC_SUBST(use_ldconfig)
 AC_SUBST(ldd_rewrite_script)
 
+if test $with_fp = yes; then
+  AC_DEFINE(WITH_FP)
+fi
+
 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
 if test $gnu_ld = yes; then
   AC_DEFINE(HAVE_GNU_LD)
--- config.h.in.orig	Thu Jun  6 13:17:09 2002
+++ config.h.in	Thu Jun  6 13:17:35 2002
@@ -2,6 +2,9 @@
 # error "glibc cannot be compiled without optimization"
 #endif
 
+/* Define if using hardware FPU; set by --with-fp. */
+#undef WITH_FP
+
 /* Define if using GNU ld, with support for weak symbols in a.out,
    and for symbol set and warning messages extensions in a.out and ELF.
    This implies HAVE_WEAK_SYMBOLS; set by --with-gnu-ld.  */
--- config.make.in.orig	Thu Jun  6 14:34:54 2002
+++ config.make.in	Thu Jun  6 14:36:11 2002
@@ -44,6 +44,7 @@
 have-initfini = @libc_cv_have_initfini@
 have-Bgroup = @libc_cv_Bgroup@
 need-nopic-initfini = @nopic_initfini@
+with-fp = @with_fp@
 with-cvs = @with_cvs@
 old-glibc-headers = @old_glibc_headers@
 unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
--- math/Makefile.orig	Fri Jun  7 16:43:43 2002
+++ math/Makefile	Fri Jun  7 16:49:45 2002
@@ -28,8 +28,12 @@
 # Internal header files.
 distribute	:= math_ldbl.h math_private.h machine/asm.h
 
+include ../Makeconfig
+
 # FPU support code.
+ifeq ($(with-fp),yes)
 aux		:= setfpucw fpu_control
+endif
 
 # Build the -lm library.
 
@@ -78,8 +82,6 @@
 routines = $(calls) $(calls:=f) $(long-c-$(long-double-fcts))
 long-c-yes = $(calls:=l)
 distribute += $(long-c-yes:=.c)
-
-include ../Makeconfig
 
 # Rules for the test suite.
 tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
--- glibc-2.2.5/sysdeps/powerpc/__longjmp.S.orig	Wed Jul  3 12:34:10 2002
+++ glibc-2.2.5/sysdeps/powerpc/__longjmp.S	Wed Jul  3 12:44:02 2002
@@ -23,6 +23,7 @@
 #include <bits/setjmp.h>
 #include <bp-sym.h>
 #include <bp-asm.h>
+#include <config.h>	/* for HAVE_FP */
 
 ENTRY (BP_SYM (__longjmp))
 	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
@@ -30,6 +31,7 @@
 	lwz r1,(JB_GPR1*4)(r3)
 	lwz r2,(JB_GPR2*4)(r3)
 	lwz r0,(JB_LR*4)(r3)
+#ifdef HAVE_FP
 	lwz r14,((JB_GPRS+0)*4)(r3)
 	lfd fp14,((JB_FPRS+0*2)*4)(r3)
 	lwz r15,((JB_GPRS+1)*4)(r3)
@@ -69,6 +71,29 @@
 	lfd fp30,((JB_FPRS+16*2)*4)(r3)
 	lwz r31,((JB_GPRS+17)*4)(r3)
 	lfd fp31,((JB_FPRS+17*2)*4)(r3)
+#else
+	lwz r14,((JB_GPRS+0)*4)(r3)
+	lwz r15,((JB_GPRS+1)*4)(r3)
+	lwz r16,((JB_GPRS+2)*4)(r3)
+	lwz r17,((JB_GPRS+3)*4)(r3)
+	lwz r18,((JB_GPRS+4)*4)(r3)
+	lwz r19,((JB_GPRS+5)*4)(r3)
+	lwz r20,((JB_GPRS+6)*4)(r3)
+	mtlr r0
+	lwz r21,((JB_GPRS+7)*4)(r3)
+	lwz r22,((JB_GPRS+8)*4)(r3)
+	lwz r0,(JB_CR*4)(r3)
+	lwz r23,((JB_GPRS+9)*4)(r3)
+	lwz r24,((JB_GPRS+10)*4)(r3)
+	lwz r25,((JB_GPRS+11)*4)(r3)
+	mtcrf 0xFF,r0
+	lwz r26,((JB_GPRS+12)*4)(r3)
+	lwz r27,((JB_GPRS+13)*4)(r3)
+	lwz r28,((JB_GPRS+14)*4)(r3)
+	lwz r29,((JB_GPRS+15)*4)(r3)
+	lwz r30,((JB_GPRS+16)*4)(r3)
+	lwz r31,((JB_GPRS+17)*4)(r3)
+#endif
 	mr r3,r4
 	blr
 END (BP_SYM (__longjmp))
--- glibc-2.2.5/sysdeps/powerpc/setjmp.S.orig	Wed Jul  3 12:21:07 2002
+++ glibc-2.2.5/sysdeps/powerpc/setjmp.S	Wed Jul  3 12:44:09 2002
@@ -23,19 +23,15 @@
 #include <bits/setjmp.h>
 #include <bp-sym.h>
 #include <bp-asm.h>
+#include <config.h>	/* for HAVE_FP */
 
 ENTRY (BP_SYM (__sigsetjmp))
 	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
 
 	stw  r1,(JB_GPR1*4)(3)
 	mflr r0
-	stw  r2,(JB_GPR2*4)(3)
-	stw  r14,((JB_GPRS+0)*4)(3)
-	stfd fp14,((JB_FPRS+0*2)*4)(3)
-	stw  r0,(JB_LR*4)(3)
-	stw  r15,((JB_GPRS+1)*4)(3)
-	stfd fp15,((JB_FPRS+1*2)*4)(3)
 	mfcr r0
+#ifdef HAVE_FP
 	stw  r16,((JB_GPRS+2)*4)(3)
 	stfd fp16,((JB_FPRS+2*2)*4)(3)
 	stw  r0,(JB_CR*4)(3)
@@ -69,5 +65,24 @@
 	stfd fp30,((JB_FPRS+16*2)*4)(3)
 	stw  r31,((JB_GPRS+17)*4)(3)
 	stfd fp31,((JB_FPRS+17*2)*4)(3)
+#else
+	stw  r16,((JB_GPRS+2)*4)(3)
+	stw  r0,(JB_CR*4)(3)
+	stw  r17,((JB_GPRS+3)*4)(3)
+	stw  r18,((JB_GPRS+4)*4)(3)
+	stw  r19,((JB_GPRS+5)*4)(3)
+	stw  r20,((JB_GPRS+6)*4)(3)
+	stw  r21,((JB_GPRS+7)*4)(3)
+	stw  r22,((JB_GPRS+8)*4)(3)
+	stw  r23,((JB_GPRS+9)*4)(3)
+	stw  r24,((JB_GPRS+10)*4)(3)
+	stw  r25,((JB_GPRS+11)*4)(3)
+	stw  r26,((JB_GPRS+12)*4)(3)
+	stw  r27,((JB_GPRS+13)*4)(3)
+	stw  r28,((JB_GPRS+14)*4)(3)
+	stw  r29,((JB_GPRS+15)*4)(3)
+	stw  r30,((JB_GPRS+16)*4)(3)
+	stw  r31,((JB_GPRS+17)*4)(3)
+#endif
 	b JUMPTARGET (BP_SYM (__sigjmp_save))
 END (BP_SYM (__sigsetjmp))

Attachment: build-all.sh
Description: application/shellscript

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]