binutils/binutils.patch

Sat, 24 Mar 2012 21:00:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 24 Mar 2012 21:00:00 +0100
changeset 413
506d3a1a6c3c
parent 69
84180bd0cb45
child 425
7543b0b3134d
permissions
-rw-r--r--

Correct mistaken backslash and relocate presence XML def substitution.

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

mercurial