Mon, 28 Jan 2013 17:37:18 +0100
Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.
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@425 | 11 | --- include/elf/common.h.orig 2011-07-22 22:22:36.000000000 +0200 |
michael@425 | 12 | +++ include/elf/common.h 2011-11-22 21:09:42.000000000 +0100 |
michael@425 | 13 | @@ -475,6 +475,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@425 | 24 | --- bfd/elf.c.orig 2011-07-03 15:37:06.000000000 +0200 |
michael@425 | 25 | +++ bfd/elf.c 2011-11-22 21:09:42.000000000 +0100 |
michael@425 | 26 | @@ -1907,6 +1907,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@425 | 38 | @@ -5103,6 +5108,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@425 | 52 | --- bfd/elf64-x86-64.c.orig 2011-11-21 10:29:25.000000000 +0100 |
michael@425 | 53 | +++ bfd/elf64-x86-64.c 2011-11-22 21:12:41.000000000 +0100 |
michael@425 | 54 | @@ -512,8 +512,13 @@ |
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@425 | 59 | +#define ELF64_DYNAMIC_INTERPRETER "/lib/amd64/ld.so.1" |
michael@425 | 60 | +#define ELF32_DYNAMIC_INTERPRETER "/lib/ld32.so.1" |
michael@68 | 61 | +#else |
michael@425 | 62 | #define ELF64_DYNAMIC_INTERPRETER "/lib/ld64.so.1" |
michael@425 | 63 | #define ELF32_DYNAMIC_INTERPRETER "/lib/ld32.so.1" |
michael@68 | 64 | +#endif |
michael@68 | 65 | |
michael@68 | 66 | /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid |
michael@68 | 67 | copying dynamic variables from a shared lib into an app's dynbss |
michael@68 | 68 | |
michael@68 | 69 | ----------------------------------------------------------------------------- |
michael@68 | 70 | |
michael@68 | 71 | Fight problems with --disable-nls under Solaris |
michael@68 | 72 | |
michael@68 | 73 | Index: gas/asintl.h |
michael@331 | 74 | --- gas/asintl.h.orig 2007-07-03 13:01:02.000000000 +0200 |
michael@425 | 75 | +++ gas/asintl.h 2011-11-22 21:09:42.000000000 +0100 |
michael@68 | 76 | @@ -20,6 +20,11 @@ |
michael@68 | 77 | Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA |
michael@68 | 78 | 02110-1301, USA. */ |
michael@68 | 79 | |
michael@68 | 80 | +#ifndef ENABLE_NLS |
michael@68 | 81 | +# define _LIBINTL_H |
michael@68 | 82 | +# define _LIBGETTEXT_H |
michael@68 | 83 | +#endif |
michael@68 | 84 | + |
michael@68 | 85 | #ifdef HAVE_LOCALE_H |
michael@68 | 86 | # ifndef ENABLE_NLS |
michael@68 | 87 | /* The Solaris version of locale.h always includes libintl.h. If we have |
michael@68 | 88 | Index: ld/ld.h |
michael@425 | 89 | --- ld/ld.h.orig 2011-07-16 09:58:40.000000000 +0200 |
michael@425 | 90 | +++ ld/ld.h 2011-11-22 21:09:42.000000000 +0100 |
michael@68 | 91 | @@ -23,6 +23,11 @@ |
michael@68 | 92 | #ifndef LD_H |
michael@68 | 93 | #define LD_H |
michael@68 | 94 | |
michael@68 | 95 | +#ifndef ENABLE_NLS |
michael@68 | 96 | +# define _LIBINTL_H |
michael@68 | 97 | +# define _LIBGETTEXT_H |
michael@68 | 98 | +#endif |
michael@68 | 99 | + |
michael@68 | 100 | #ifdef HAVE_LOCALE_H |
michael@68 | 101 | #endif |
michael@68 | 102 | #ifndef SEEK_CUR |
michael@68 | 103 | Index: ld/Makefile.in |
michael@425 | 104 | --- ld/Makefile.in.orig 2011-07-22 22:22:37.000000000 +0200 |
michael@425 | 105 | +++ ld/Makefile.in 2011-11-22 21:09:42.000000000 +0100 |
michael@425 | 106 | @@ -366,7 +366,7 @@ |
michael@68 | 107 | # We put the scripts in the directory $(scriptdir)/ldscripts. |
michael@68 | 108 | # We can't put the scripts in $(datadir) because the SEARCH_DIR |
michael@68 | 109 | # directives need to be different for native and cross linkers. |
michael@68 | 110 | -scriptdir = $(tooldir)/lib |
michael@68 | 111 | +scriptdir = $(libdir) |
michael@68 | 112 | BASEDIR = $(srcdir)/.. |
michael@68 | 113 | BFDDIR = $(BASEDIR)/bfd |
michael@68 | 114 | INCDIR = $(BASEDIR)/include |
michael@68 | 115 | |
michael@68 | 116 | ----------------------------------------------------------------------------- |
michael@68 | 117 | |
michael@331 | 118 | Workaround problems under Mac OS X. |
michael@68 | 119 | |
michael@68 | 120 | Index: libiberty/fibheap.c |
michael@331 | 121 | --- libiberty/fibheap.c.orig 2009-05-29 05:01:15.000000000 +0200 |
michael@425 | 122 | +++ libiberty/fibheap.c 2011-11-22 21:09:42.000000000 +0100 |
michael@68 | 123 | @@ -34,8 +34,11 @@ |
michael@68 | 124 | #include "libiberty.h" |
michael@68 | 125 | #include "fibheap.h" |
michael@68 | 126 | |
michael@68 | 127 | - |
michael@68 | 128 | +#ifdef LONG_MIN |
michael@68 | 129 | #define FIBHEAPKEY_MIN LONG_MIN |
michael@68 | 130 | +#else |
michael@68 | 131 | +#define FIBHEAPKEY_MIN (-0x7fffffffL - 1) |
michael@68 | 132 | +#endif |
michael@68 | 133 | |
michael@68 | 134 | static void fibheap_ins_root (fibheap_t, fibnode_t); |
michael@68 | 135 | static void fibheap_rem_root (fibheap_t, fibnode_t); |
michael@68 | 136 | |
michael@68 | 137 | ----------------------------------------------------------------------------- |
michael@68 | 138 | |
michael@68 | 139 | Disable the "error" about "eh_frame_hdr" as it is actually more a |
michael@68 | 140 | warning (the linking is *not* aborted) and it occurs at least under |
michael@68 | 141 | FreeBSD-7.0/amd64 regularily without doing any obvious harm. Seems |
michael@68 | 142 | like the issue itself exists since a longer time, but in recent GNU |
michael@68 | 143 | binutils this additional message was introduced. As we cannot observe |
michael@68 | 144 | any problems and this message really confused, just disable it for now. |
michael@68 | 145 | |
michael@68 | 146 | Index: bfd/elf-eh-frame.c |
michael@425 | 147 | --- bfd/elf-eh-frame.c.orig 2011-06-20 15:18:47.000000000 +0200 |
michael@425 | 148 | +++ bfd/elf-eh-frame.c 2011-11-22 21:09:42.000000000 +0100 |
michael@425 | 149 | @@ -913,9 +913,11 @@ |
michael@331 | 150 | goto success; |
michael@68 | 151 | |
michael@331 | 152 | free_no_table: |
michael@68 | 153 | +#if 0 |
michael@68 | 154 | (*info->callbacks->einfo) |
michael@68 | 155 | (_("%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"), |
michael@68 | 156 | abfd, sec); |
michael@68 | 157 | +#endif |
michael@331 | 158 | hdr_info->table = FALSE; |
michael@68 | 159 | if (sec_info) |
michael@331 | 160 | free (sec_info); |