Browse Source

GNU binutils 2.15 segfaulted in the past when built with GNU gcc 3.4.0 under at least Sun Solaris. Now with gcc 3.4.3 this seems to be no longer happening, so try again to upgrade to GNU binutils 2.15. This is especially needed for supporting amd64-freebsd5.3.

Ralf S. Engelschall 21 years ago
parent
commit
47e1aa288a
2 changed files with 12 additions and 80 deletions
  1. 9 76
      binutils/binutils.patch
  2. 3 4
      binutils/binutils.spec

+ 9 - 76
binutils/binutils.patch

@@ -2,9 +2,9 @@ Use the platform specific ELF branding expected under FreeBSD.
 This is similar to what the vendor ld(1) does on this platform.
 
 Index: bfd/elf.c
---- bfd/elf.c.orig	2002-07-30 20:19:42.000000000 +0200
-+++ bfd/elf.c	2002-08-22 17:41:47.000000000 +0200
-@@ -4235,6 +4235,12 @@
+--- bfd/elf.c.orig	2004-05-17 21:35:57 +0200
++++ bfd/elf.c	2004-11-24 13:21:56 +0100
+@@ -4327,6 +4327,12 @@
    else
      i_ehdrp->e_type = ET_REL;
  
@@ -20,87 +20,20 @@ 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.
+Support FreeBSD >= 4.10 by fixing platform detection.
 
 Index: bfd/configure
---- bfd/configure.orig	2003-06-12 16:25:46.000000000 +0200
-+++ bfd/configure	2004-04-30 22:01:31.000000000 +0200
-@@ -5133,6 +5133,10 @@
-   i[3456]86-*-bsdi)
+--- bfd/configure.orig	2004-05-17 21:35:57 +0200
++++ bfd/configure	2004-11-24 15:14:05 +0100
+@@ -5312,6 +5312,10 @@
+   i[3-7]86-*-bsdi)
  	COREFILE=
  	;;
 +  i[3456]86-*-freebsd4.1[0-9]*)
 +	COREFILE=''
 +	TRAD_HEADER='"hosts/i386bsd.h"'
 +	;;
-   i[3456]86-*-bsd* | i[34567]86-*-freebsd[123] | i[34567]86-*-freebsd[123]\.* | i[34567]86-*-freebsd4\.[01234]* | i[34567]86-*-freebsd*aout*)
+   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*)
  	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

+ 3 - 4
binutils/binutils.spec

@@ -33,8 +33,8 @@ Distribution: OpenPKG
 Class:        CORE
 Group:        Utility
 License:      GPL
-Version:      2.14
-Release:      20040530
+Version:      2.15
+Release:      20041125
 
 #   list of sources
 Source0:      ftp://sources.redhat.com/pub/binutils/releases/binutils-%{version}.tar.bz2
@@ -63,10 +63,9 @@ AutoReqProv:  no
 
 %track
     prog binutils = {
-        comment   = "rse: 2.15 is broken (segfaults on multiple platforms once built with gcc 3.4.0)"
         version   = %{version}
         url       = ftp://sources.redhat.com/pub/binutils/releases/
-        regex     = binutils-(\d+\.(14|15\.\d+|1[6-9](\.\d+)?))\.tar\.bz2
+        regex     = binutils-(__VER__)\.tar\.bz2
     }
 
 %prep