[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: GCC 3.2 bootstrap: compare fails



On Mon, Oct 07, 2002 at 11:22:08AM +0200, Dirk Heinrichs wrote:
> Hello,
> 
> I tried to build gcc 3.2 from sources on Woody/m68k. I took the original
> sources and diffs (as of 24.09.) from the debian pool directory and
> manually applied all the patches the debian build system would have
> applied for m68k. Compilation with
> 
> make CFLAGS='-O' LIBCFLAGS='-g -O2' \
> 	LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap

are you sure you want to use this CFLAGS?

> as found in the build instructions work fine but comparison of stages 2
> and 3 fails.
> 
> I didn't try the binutils from the pool (yet), but vanilla 2.13. Can I go
> on and just restart make without the bootstrap target or could I run into
> more serious problems.

looks like pretty serious. Binutils 2.13 may be producing wrong code
with gcc-3.2, this was fixed only very recently.

gcc-3.2 works very good for me with another set of patches, no idea
what kind of patches are in the debian-gcc-3.2.

There is also a problem that some binutils used to produce code that 
is sometimes (actually very rarely) incompatible with the dynamic loader 
in glibc, not sure if this is already fixed in debian.

I have attached some patches in case you want to play with it. The gcc
patch has also the effect to change cpu target default to 68020-60.

Richard

>From root@rz.de  Sat Aug 24 20:18:13 2002
Return-Path: <root>
Received: (from root@localhost)
	by rz.de (8.8.8/8.8.8) id UAA00603
	for rz; Sat, 24 Aug 2002 20:18:12 +0200
Received: from faui80.informatik.uni-erlangen.de (faui80.informatik.uni-erlangen.de [131.188.38.1])
	by faui02.informatik.uni-erlangen.de (8.12.5/8.12.5) with ESMTP id g7OGW9DI017074
	for <rdzidlic@cip.informatik.uni-erlangen.de>; Sat, 24 Aug 2002 18:32:09 +0200 (MEST)
Received: from faui45.informatik.uni-erlangen.de (root@faui45.informatik.uni-erlangen.de [131.188.34.45])
	by faui80.informatik.uni-erlangen.de (8.9.1a/8.1.13-FAU) with ESMTP id SAA27783
	for <rdzidlic@faui80.informatik.uni-erlangen.de>; Sat, 24 Aug 2002 18:32:08 +0200 (MEST)
Received: from nerdtwo.nerdnet.nl (root@nerdtwo.nerdnet.nl [217.119.4.49])
	by faui45.informatik.uni-erlangen.de (8.9.1/8.1.49-FAU) with ESMTP id SAA25450
	for <rdzidlic@faui80.informatik.uni-erlangen.de>; Sat, 24 Aug 2002 18:32:05 +0200 (MET DST)
Received: from Cantor.suse.de (ns.suse.de [213.95.15.193])
	by nerdtwo.nerdnet.nl (8.12.3/8.12.3/Debian -4) with ESMTP id g7OGVwqd018815
	for <rz@linux-m68k.org>; Sat, 24 Aug 2002 18:31:59 +0200
Received: from Hermes.suse.de (Charybdis.suse.de [213.95.15.201])
	by Cantor.suse.de (Postfix) with ESMTP
	id 6F1FB145FB; Sat, 24 Aug 2002 18:31:58 +0200 (MEST)
X-Authentication-Warning: sykes.suse.de: schwab set sender to schwab@suse.de using -f
To: Richard Zidlicky <rz@linux-m68k.org>
Cc: "H. J. Lu" <hjl@lucon.org>, binutils@sources.redhat.com
Subject: Re: binutils problem
References: <20020824004405.B302@linux-m68k.org>
	<20020823220731.A12566@lucon.org> <20020824135559.A589@linux-m68k.org>
X-Yow: I just put lots of the EGG SALAD in the SILK SOCKS --
From: Andreas Schwab <schwab@suse.de>
Date: Sat, 24 Aug 2002 18:31:56 +0200
In-Reply-To: <20020824135559.A589@linux-m68k.org> (Richard Zidlicky's
 message of "Sat, 24 Aug 2002 13:55:59 +0200")
Message-ID: <je8z2wmd4z.fsf@sykes.suse.de>
User-Agent: Gnus/5.090007 (Oort Gnus v0.07) Emacs/21.3.50 (ia64-suse-linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-SBPass: NoBounce
Status: RO
Content-Length: 1767
Lines: 66

Richard Zidlicky <rz@linux-m68k.org> writes:

|> On Fri, Aug 23, 2002 at 10:07:32PM -0700, H. J. Lu wrote:
|> > I don't know much about m68k. Does anyone have any ideas?
|> 
|> I have produced a much smaller testcase:
|> 
|> ======
|> 	.section	.rodata.str1.1,"aMS",@progbits,1
|> .LC1:
|> 	.string	"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|> 
|> 
|> .LC88:  .string "__builtin_memcpy"
|> 
|> 	.text
|> 	.align	2
|> 	.globl	foobar
|> 	.type	foobar,@function
|> foobar:
|> 	pea .LC88+10
|> 
|> 	.align	2
|> =======
|> 
|> objdump -x shows:
|> 
|> RELOCATION RECORDS FOR [.text]:
|> OFFSET   TYPE              VALUE 
|> 00000002 R_68K_32          .LC88+0x00000033
|> 
|> this is wrong, the 0x33 are from start of the section.

Here is a patch:

2002-08-24  Andreas Schwab  <schwab@suse.de>

	* config/tc-m68k.c (tc_m68k_fix_adjustable): Don't adjust symbols
	in merge sections.

Index: gas/config/tc-m68k.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-m68k.c,v
retrieving revision 1.40
diff -u -p -a -u -p -a -r1.40 gas/config/tc-m68k.c
--- gas/config/tc-m68k.c	20 Aug 2002 23:49:27 -0000	1.40
+++ gas/config/tc-m68k.c	24 Aug 2002 16:28:21 -0000
@@ -848,6 +848,10 @@ tc_m68k_fix_adjustable (fixP)
   if (! relaxable_symbol (fixP->fx_addsy))
     return 0;
 
+  /* Don't adjust symbols in merge sections.  */
+  if ((S_GET_SEGMENT (fixP->fx_addsy)->flags & SEC_MERGE) != 0)
+    return 0;
+
   /* adjust_reloc_syms doesn't know about the GOT */
   switch (fixP->fx_r_type)
     {

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

--- glibc-2.2.90/sysdeps/m68k/dl-machine.h.rz	Mon Aug 26 11:44:44 2002
+++ glibc-2.2.90/sysdeps/m68k/dl-machine.h	Mon Aug 26 11:45:31 2002
@@ -311,6 +311,8 @@
   Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
   if (ELF32_R_TYPE (reloc->r_info) == R_68K_JMP_SLOT)
     *reloc_addr += l_addr;
+  else if (ELF32_R_TYPE (reloc->r_info) == R_68K_NONE)
+    return;
   else
     _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1);
 }
--- gcc-3.2-cvs/gcc/config/m68k/t-linux.rz	Wed Dec 16 16:07:26 1998
+++ gcc-3.2-cvs/gcc/config/m68k/t-linux	Wed Aug 21 22:49:01 2002
@@ -1,2 +1,4 @@
 # On GNU/Linux we can print long double
 ENQUIRE_CFLAGS = -DNO_MEM -O0
+
+TARGET_LIBGCC2_CFLAGS = -Dmc68060 -D__mc68060__
--- gcc-3.2-cvs/gcc/config/m68k/linux.h.rz	Mon Apr 15 16:27:31 2002
+++ gcc-3.2-cvs/gcc/config/m68k/linux.h	Wed Aug 21 22:49:01 2002
@@ -37,8 +37,8 @@
 #undef TARGET_VERSION
 #define TARGET_VERSION fprintf (stderr, " (68k GNU/Linux with ELF)");
 
-/* 68020 with 68881 */
-#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68881|MASK_68020)
+/* RZ: use default target 68020-60 */
+#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68881|MASK_68020|MASK_68040|MASK_68060)
 
 /* for 68k machines this only needs to be TRUE for the 68000 */
 
@@ -112,25 +112,29 @@
 #undef WCHAR_TYPE_SIZE
 #define WCHAR_TYPE_SIZE BITS_PER_WORD
 
+/* mc68020 is defined always, mc68040 and mc68060 dependening on target */
 #define CPP_PREDEFINES \
   "-D__ELF__ -Dunix -Dmc68000 -Dmc68020 -D__gnu_linux__ -Dlinux -Asystem=unix -Asystem=posix -Acpu=m68k -Amachine=m68k"
 
+/* machine dependent defines go here */
+#define EXTRA_CPP_DEFINES  "%{m68040:-Dmc68040 -D__mc68040__} %{mc68060:-Dmc68060 -D__mc68060__} %{m68020-40:-Dmc68040 -D__mc68040__} %{m68020-60:-Dmc68040 -Dmc68060 -D__mc68040__ -D__mc68060__} %{!m680*:-Dmc68040 -Dmc68060 -D__mc68040__ -D__mc68060__}"
+
 #undef CPP_SPEC
 #ifdef USE_GNULIBC_1
 #if TARGET_DEFAULT & MASK_68881
 #define CPP_SPEC \
-  "%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!msoft-float:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE}"
+  "%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!msoft-float:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE} "/**/EXTRA_CPP_DEFINES
 #else
 #define CPP_SPEC \
-  "%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{m68881:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE}"
+  "%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{m68881:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE} "/**/EXTRA_CPP_DEFINES
 #endif
 #else
 #if TARGET_DEFAULT & MASK_68881
 #define CPP_SPEC \
-  "%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!msoft-float:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+  "%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!msoft-float:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}  "/**/EXTRA_CPP_DEFINES
 #else
 #define CPP_SPEC \
-  "%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{m68881:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+  "%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{m68881:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}  "/**/EXTRA_CPP_DEFINES
 #endif
 #endif
 
@@ -139,7 +143,7 @@
 #undef ASM_SPEC
 #define ASM_SPEC \
   "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \
-%{m68040} %{m68060:-m68040}"
+%{m68040} %{m68060:-m68060}"
 
 /* Provide a LINK_SPEC appropriate for GNU/Linux.  Here we provide support
    for the special GCC options -static and -shared, which allow us to
--- gcc-3.2-cvs/gcc/longlong.h.rz	Fri Feb  8 22:08:05 2002
+++ gcc-3.2-cvs/gcc/longlong.h	Wed Aug 21 22:49:01 2002
@@ -586,11 +586,12 @@
 	     "g" ((USItype) (bl)))
 
 /* The '020, '030, '040 and CPU32 have 32x32->64 and 64/32->32q-32r.  */
-#if defined (__mc68020__) || defined(mc68020) \
+#if !defined(__mc68060__) && !defined(mc68060) && \
+       (defined (__mc68020__) || defined(mc68020) \
 	|| defined(__mc68030__) || defined(mc68030) \
 	|| defined(__mc68040__) || defined(mc68040) \
 	|| defined(__mcpu32__) || defined(mcpu32) \
-	|| defined(__NeXT__)
+	|| defined(__NeXT__))
 #define umul_ppmm(w1, w0, u, v) \
   __asm__ ("mulu%.l %3,%1:%0"						\
 	   : "=d" ((USItype) (w0)),					\
--- gcc-3.2-cvs/gcc/simplify-rtx.c.rz	Wed Mar  6 17:43:21 2002
+++ gcc-3.2-cvs/gcc/simplify-rtx.c	Sat Aug 24 23:06:34 2002
@@ -2618,6 +2618,7 @@
      suppress this simplification.  If the hard register is the stack,
      frame, or argument pointer, leave this as a SUBREG.  */
 
+#if 0
   if (REG_P (op)
       && (! REG_FUNCTION_VALUE_P (op)
 	  || ! rtx_equal_function_value_matters)
@@ -2662,6 +2663,7 @@
 	  return x;
 	}
     }
+#endif
 
   /* If we have a SUBREG of a register that we are replacing and we are
      replacing it with a MEM, make a new MEM and try replacing the
--- gcc-3.2-cvs/gcc/flow.c.rz	Thu Apr 18 16:21:09 2002
+++ gcc-3.2-cvs/gcc/flow.c	Wed Aug 21 22:49:01 2002
@@ -1770,8 +1770,11 @@
 	     so they are made live.  */
 	  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
 	    if (global_regs[i])
-	      mark_used_reg (pbi, gen_rtx_REG (reg_raw_mode[i], i),
-			     cond, insn);
+	      {
+		SET_REGNO_REG_SET (pbi->reg_live, i);
+		mark_used_reg (pbi, gen_rtx_REG (reg_raw_mode[i], i),
+			       cond, insn);
+	      }
 	}
     }
 
--- gcc-3.2-cvs/gcc/config.gcc.rz	Tue Aug  6 11:20:55 2002
+++ gcc-3.2-cvs/gcc/config.gcc	Wed Aug 21 22:49:01 2002
@@ -2078,7 +2078,7 @@
 				# GNU/Linux C library 5
 	tm_file=m68k/linux.h
 	tmake_file="t-slibgcc-elf-ver t-linux t-linux-gnulibc1 m68k/t-linux"
-	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o"
 	float_format=m68k
 	gnu_ld=yes
 	;;
@@ -2087,7 +2087,7 @@
 				# aka the GNU/Linux C library 6.
 	tm_file=m68k/linux.h
 	tmake_file="t-slibgcc-elf-ver t-linux m68k/t-linux"
-	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o"
 	float_format=m68k
 	gnu_ld=yes
 	;;

Reply to: