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

Re: Glibc 2.3 pre-releases



On Tue, Sep 10, 2002 at 05:04:20AM -0700, Jeff Bailey wrote:
> On Tue, Sep 10, 2002 at 12:39:36AM +0200, Richard Zidlicky wrote:
> 
> > SO far I have had very good results with glibc-2.3 on m68k-linux,
> > what are the problems here?
> 
> The problem is just that I don't know.  There doesn't seem to be
> anyone on the debian-glibc list who has m68k.  I know that m68k takes
> forever to build glibc, so what do you recommend for testing it?  Are
> you willing to start a test compile and let it run overnight, and then
> look at the 'make check' results?

why not use the normal autobuilder procedure for the build and 'make check'?
I can sure compare the results with my local installation but real life
testing is probably even more important.

What compiler and binutils are to be used? Minor glibc and binutils patches 
are required for use with gcc-3.2, should be in the CVS already but appending 
it here anyway.

Gcc-3.2 itself appears to require a good bunch of patches, those are
only my unskilled hacks but it appears to work for m68k.

Richard


--- 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);
 }


Binutils:
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)
     {


Gcc-3.2:

--- 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/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);
+	      }
 	}
     }
 



### a better patch should be in 3.2 CVS by now, only 3.2 release lacks it ###
--- 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: