Parcourir la source

fix binutils 2.14 packaging by using the old corresponding patch

Ralf S. Engelschall il y a 21 ans
Parent
commit
21e15bdd19
1 fichiers modifiés avec 68 ajouts et 1 suppressions
  1. 68 1
      binutils/binutils.patch

+ 68 - 1
binutils/binutils.patch

@@ -20,6 +20,23 @@ Index: bfd/elf.c
 
 -----------------------------------------------------------------------------
 
+Fix the linker under Solaris/SPARC.
+
+Index: bfd/elf64-sparc.c
+--- bfd/elf64-sparc.c.orig	2003-06-20 09:42:19.000000000 +0200
++++ bfd/elf64-sparc.c	2003-06-20 09:42:40.000000000 +0200
+@@ -2684,7 +2684,7 @@
+ 	       overflows.  We don't, but this breaks stabs debugging
+ 	       info, whose relocations are only 32-bits wide.  Ignore
+ 	       overflows for discarded entries.  */
+-	    if (r_type == R_SPARC_32
++	    if ((r_type == R_SPARC_32 || r_type == R_SPARC_DISP32)
+ 		&& _bfd_elf_section_offset (output_bfd, info, input_section,
+ 					    rel->r_offset) == (bfd_vma) -1)
+ 	      break;
+
+-----------------------------------------------------------------------------
+
 Support FreeBSD 4.10 by fixing platform detection.
 
 Index: bfd/configure
@@ -33,7 +50,57 @@ Index: bfd/configure
 +	COREFILE=''
 +	TRAD_HEADER='"hosts/i386bsd.h"'
 +	;;
-   i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234]* | i[3-7]86-*-freebsd*aout*)
+   i[3456]86-*-bsd* | i[34567]86-*-freebsd[123] | i[34567]86-*-freebsd[123]\.* | i[34567]86-*-freebsd4\.[01234]* | i[34567]86-*-freebsd*aout*)
  	COREFILE=trad-core.lo
  	TRAD_HEADER='"hosts/i386bsd.h"'
 
+-----------------------------------------------------------------------------
+
+Accept (and ignore) --as-needed/--no-as-needed options from GNU binutils
+2.15 in our GNU binutils 2.14 to resolve a chicken and egg problem under
+platforms (like Fedora Core 2) which already run GNU binutils 2.15: the
+vendor cc(1) knows that it has ld(1) from GNU binutils 2.15 and hence
+always uses the --as-needed option when calling ld(1). Unfortunately,
+between having built "binutils" and "gcc" packages, this will break
+OpenPKG because the vendor cc(1) would run the OpenPKG ld(1) with an
+option is (still) does not understand. The only workaround is to let our
+ld(1) accept and ignore this option. Once our cc(1) from "gcc" package
+is installed, the problem is gone, because our "gcc" package correctly
+detects that our ld(1) still does ot understand --as-needed.
+
+Index: ld/lexsup.c
+--- ld/lexsup.c.orig	2003-03-31 20:12:52.000000000 +0200
++++ ld/lexsup.c	2004-05-05 16:52:46.000000000 +0200
+@@ -112,7 +112,9 @@
+ #define OPTION_SPLIT_BY_RELOC		(OPTION_WARN_SECTION_ALIGN + 1)
+ #define OPTION_SPLIT_BY_FILE 	    	(OPTION_SPLIT_BY_RELOC + 1)
+ #define OPTION_WHOLE_ARCHIVE		(OPTION_SPLIT_BY_FILE + 1)
+-#define OPTION_WRAP			(OPTION_WHOLE_ARCHIVE + 1)
++#define OPTION_AS_NEEDED                (OPTION_WHOLE_ARCHIVE + 1)
++#define OPTION_NO_AS_NEEDED             (OPTION_AS_NEEDED + 1)
++#define OPTION_WRAP			(OPTION_NO_AS_NEEDED + 1)
+ #define OPTION_FORCE_EXE_SUFFIX		(OPTION_WRAP + 1)
+ #define OPTION_GC_SECTIONS		(OPTION_FORCE_EXE_SUFFIX + 1)
+ #define OPTION_NO_GC_SECTIONS		(OPTION_GC_SECTIONS + 1)
+@@ -423,6 +425,10 @@
+      TWO_DASHES },
+   { {"whole-archive", no_argument, NULL, OPTION_WHOLE_ARCHIVE},
+       '\0', NULL, N_("Include all objects from following archives"), TWO_DASHES },
++  { {"as-needed", no_argument, NULL, OPTION_AS_NEEDED},
++      '\0', NULL, N_("Only set DT_NEEDED for following dynamic libs if used"), TWO_DASHES },
++  { {"no-as-needed", no_argument, NULL, OPTION_NO_AS_NEEDED},
++      '\0', NULL, N_("Always set DT_NEEDED for following dynamic libs"), TWO_DASHES },
+   { {"wrap", required_argument, NULL, OPTION_WRAP},
+       '\0', N_("SYMBOL"), N_("Use wrapper functions for SYMBOL"), TWO_DASHES },
+   { {"mpc860c0", optional_argument, NULL, OPTION_MPC860C0},
+@@ -823,6 +829,10 @@
+ 	case OPTION_NO_WHOLE_ARCHIVE:
+ 	  whole_archive = FALSE;
+ 	  break;
++	case OPTION_AS_NEEDED:
++	case OPTION_NO_AS_NEEDED:
++	  einfo("%P: warning: options --as-needed and --no-as-needed still not supported\n");
++	  break;
+ 	case 'O':
+ 	  /* FIXME "-O<non-digits> <value>" used to set the address of
+ 	     section <non-digits>.  Was this for compatibility with