binutils/binutils.patch

Thu, 01 Dec 2011 13:33:32 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 01 Dec 2011 13:33:32 +0100
changeset 397
c98ae03f4266
parent 69
84180bd0cb45
child 425
7543b0b3134d
permissions
-rw-r--r--

Update and correct to vendor version, removing deprecated module logic.

     1 Use the platform specific ELF branding expected under FreeBSD.
     2 This is similar to what the vendor ld(1) does on this platform.
     4 Additionally, recognize and ignore Solaris 10's "Solaris Cryptographic
     5 Framework" ELF header type "SUNW_signature", Solaris 10 "Symbol
     6 information" ELF header type "SUNW_syminfo" and Solaris 10 "DTrace
     7 Object Format" ELF header type. Also, fix the path to the dynamic
     8 linker under Solaris 10/amd64.
    10 Index: include/elf/common.h
    11 --- include/elf/common.h.orig	2010-05-18 05:31:06.000000000 +0200
    12 +++ include/elf/common.h	2010-12-09 16:48:56.000000000 +0100
    13 @@ -474,6 +474,9 @@
    14  #define SHT_SUNW_verdef	0x6ffffffd	/* Versions defined by file */
    15  #define SHT_SUNW_verneed 0x6ffffffe	/* Versions needed by file */
    16  #define SHT_SUNW_versym	0x6fffffff	/* Symbol versions */
    17 +#define SHT_SUNW_syminfo 0x6ffffffc	/* Symbol information */
    18 +#define SHT_SUNW_signature 0x6ffffff6	/* Solaris Cryptographic Framework: Digital Signature */
    19 +#define SHT_SUNW_dof 0x6ffffff4	/* Solaris DTrace Object Format */
    21  #define SHT_GNU_verdef	SHT_SUNW_verdef
    22  #define SHT_GNU_verneed	SHT_SUNW_verneed
    23 Index: bfd/elf.c
    24 --- bfd/elf.c.orig	2010-10-29 14:10:24.000000000 +0200
    25 +++ bfd/elf.c	2010-12-09 16:48:57.000000000 +0100
    26 @@ -1884,6 +1884,11 @@
    27        elf_tdata (abfd)->dynverref_hdr = *hdr;
    28        return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
    30 +    case SHT_SUNW_syminfo:
    31 +    /* case SHT_SUNW_signature: conflicts with new SHT_GNU_HASH in Binutils 2.18 */
    32 +    case SHT_SUNW_dof:
    33 +      return TRUE;
    34 +
    35      case SHT_SHLIB:
    36        return TRUE;
    38 @@ -5036,6 +5041,12 @@
    39    else
    40      i_ehdrp->e_type = ET_REL;
    42 +  /* OpenPKG platform branding BEGIN */
    43 +#if defined(OPENPKG_OS_FREEBSD)
    44 +  i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
    45 +#endif
    46 +  /* OpenPKG platform branding END */
    47 +
    48    switch (bfd_get_arch (abfd))
    49      {
    50      case bfd_arch_unknown:
    51 Index: bfd/elf64-x86-64.c
    52 --- bfd/elf64-x86-64.c.orig	2010-10-21 14:29:02.000000000 +0200
    53 +++ bfd/elf64-x86-64.c	2010-12-09 16:48:57.000000000 +0100
    54 @@ -360,7 +360,11 @@
    55  /* The name of the dynamic interpreter.	 This is put in the .interp
    56     section.  */
    58 +#if defined(OPENPKG_OS_SOLARIS)
    59 +#define ELF_DYNAMIC_INTERPRETER "/lib/amd64/ld.so.1"
    60 +#else
    61  #define ELF_DYNAMIC_INTERPRETER "/lib/ld64.so.1"
    62 +#endif
    64  /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
    65     copying dynamic variables from a shared lib into an app's dynbss
    67 -----------------------------------------------------------------------------
    69 Support FreeBSD >= 4.10 by fixing platform detection.
    71 Index: bfd/configure
    72 --- bfd/configure.orig	2010-12-08 09:37:34.000000000 +0100
    73 +++ bfd/configure	2010-12-09 16:48:57.000000000 +0100
    74 @@ -13876,6 +13876,10 @@
    75    i[3-7]86-*-bsdi)
    76  	COREFILE=
    77  	;;
    78 +  i[3456]86-*-freebsd4.1[0-9]*)
    79 +	COREFILE=''
    80 +	TRAD_HEADER='"hosts/i386bsd.h"'
    81 +	;;
    82    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-*-freebsd4\.[01234]\.* | i[3-7]86-*-freebsd*aout*)
    83  	COREFILE=trad-core.lo
    84  	TRAD_HEADER='"hosts/i386bsd.h"'
    86 -----------------------------------------------------------------------------
    88 Fight problems with --disable-nls under Solaris
    90 Index: gas/asintl.h
    91 --- gas/asintl.h.orig	2007-07-03 13:01:02.000000000 +0200
    92 +++ gas/asintl.h	2010-12-09 16:48:57.000000000 +0100
    93 @@ -20,6 +20,11 @@
    94     Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
    95     02110-1301, USA.  */
    97 +#ifndef ENABLE_NLS
    98 +# define _LIBINTL_H
    99 +# define _LIBGETTEXT_H
   100 +#endif
   101 +
   102  #ifdef HAVE_LOCALE_H
   103  # ifndef ENABLE_NLS
   104     /* The Solaris version of locale.h always includes libintl.h.  If we have
   105 Index: ld/ld.h
   106 --- ld/ld.h.orig	2009-11-26 14:45:25.000000000 +0100
   107 +++ ld/ld.h	2010-12-09 16:48:57.000000000 +0100
   108 @@ -23,6 +23,11 @@
   109  #ifndef LD_H
   110  #define LD_H
   112 +#ifndef ENABLE_NLS
   113 +# define _LIBINTL_H
   114 +# define _LIBGETTEXT_H
   115 +#endif
   116 +
   117  #ifdef HAVE_LOCALE_H
   118  #endif
   119  #ifndef SEEK_CUR
   120 Index: ld/Makefile.in
   121 --- ld/Makefile.in.orig	2010-11-05 11:34:22.000000000 +0100
   122 +++ ld/Makefile.in	2010-12-09 16:48:57.000000000 +0100
   123 @@ -360,7 +360,7 @@
   124  # We put the scripts in the directory $(scriptdir)/ldscripts.
   125  # We can't put the scripts in $(datadir) because the SEARCH_DIR
   126  # directives need to be different for native and cross linkers.
   127 -scriptdir = $(tooldir)/lib
   128 +scriptdir = $(libdir)
   129  BASEDIR = $(srcdir)/..
   130  BFDDIR = $(BASEDIR)/bfd
   131  INCDIR = $(BASEDIR)/include
   133 -----------------------------------------------------------------------------
   135 Workaround problems under Mac OS X.
   137 Index: libiberty/fibheap.c
   138 --- libiberty/fibheap.c.orig	2009-05-29 05:01:15.000000000 +0200
   139 +++ libiberty/fibheap.c	2010-12-09 16:48:57.000000000 +0100
   140 @@ -34,8 +34,11 @@
   141  #include "libiberty.h"
   142  #include "fibheap.h"
   144 -
   145 +#ifdef LONG_MIN
   146  #define FIBHEAPKEY_MIN	LONG_MIN
   147 +#else
   148 +#define FIBHEAPKEY_MIN	(-0x7fffffffL - 1)
   149 +#endif
   151  static void fibheap_ins_root (fibheap_t, fibnode_t);
   152  static void fibheap_rem_root (fibheap_t, fibnode_t);
   154 -----------------------------------------------------------------------------
   156 Disable the "error" about "eh_frame_hdr" as it is actually more a
   157 warning (the linking is *not* aborted) and it occurs at least under
   158 FreeBSD-7.0/amd64 regularily without doing any obvious harm. Seems
   159 like the issue itself exists since a longer time, but in recent GNU
   160 binutils this additional message was introduced. As we cannot observe
   161 any problems and this message really confused, just disable it for now.
   163 Index: bfd/elf-eh-frame.c
   164 --- bfd/elf-eh-frame.c.orig	2010-04-09 16:40:15.000000000 +0200
   165 +++ bfd/elf-eh-frame.c	2010-12-09 16:48:57.000000000 +0100
   166 @@ -909,9 +909,11 @@
   167    goto success;
   169   free_no_table:
   170 +#if 0
   171    (*info->callbacks->einfo)
   172      (_("%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"),
   173       abfd, sec);
   174 +#endif
   175    hdr_info->table = FALSE;
   176    if (sec_info)
   177      free (sec_info);

mercurial