Index: bfd/elf-eh-frame.c --- bfd/elf-eh-frame.c.orig 2018-06-24 20:38:56.000000000 +0200 +++ bfd/elf-eh-frame.c 2018-08-10 20:38:12.270146000 +0200 @@ -1042,10 +1042,12 @@ goto success; free_no_table: +#if 0 _bfd_error_handler /* xgettext:c-format */ (_("error in %pB(%pA); no .eh_frame_hdr table will be created"), abfd, sec); +#endif hdr_info->u.dwarf.table = FALSE; if (sec_info) free (sec_info); Index: bfd/elf.c --- bfd/elf.c.orig 2018-07-10 12:47:35.000000000 +0200 +++ bfd/elf.c 2018-08-10 20:38:12.271312000 +0200 @@ -2462,6 +2462,11 @@ ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex); goto success; + case SHT_SUNW_syminfo: + /* case SHT_SUNW_signature: conflicts with new SHT_GNU_HASH in Binutils 2.18 */ + case SHT_SUNW_dof: + goto success; + case SHT_SHLIB: goto success; @@ -6227,6 +6232,12 @@ else i_ehdrp->e_type = ET_REL; + /* OpenPKG platform branding BEGIN */ +#if defined(OPENPKG_OS_FREEBSD) + i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD; +#endif + /* OpenPKG platform branding END */ + switch (bfd_get_arch (abfd)) { case bfd_arch_unknown: Index: bfd/elfxx-sparc.c --- bfd/elfxx-sparc.c.orig 2018-06-24 20:38:57.000000000 +0200 +++ bfd/elfxx-sparc.c 2018-08-10 20:38:12.271862000 +0200 @@ -2897,12 +2897,14 @@ Elf_Internal_Rela *relend; int num_relocs; bfd_boolean is_vxworks_tls; + const struct elf_backend_data *bed; htab = _bfd_sparc_elf_hash_table (info); BFD_ASSERT (htab != NULL); symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); local_got_offsets = elf_local_got_offsets (input_bfd); + bed = get_elf_backend_data (output_bfd); if (elf_hash_table (info)->hgot == NULL) got_base = 0; @@ -3542,6 +3544,8 @@ bfd_set_error (bfd_error_bad_value); return FALSE; } + if (bed->elf_osabi == ELFOSABI_FREEBSD) + outrel.r_addend -= osec->vma; } outrel.r_info = SPARC_ELF_R_INFO (htab, rel, indx, Index: gas/asintl.h --- gas/asintl.h.orig 2018-06-24 20:38:57.000000000 +0200 +++ gas/asintl.h 2018-08-10 20:38:12.271998000 +0200 @@ -20,6 +20,11 @@ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ +#ifndef ENABLE_NLS +# define _LIBINTL_H +# define _LIBGETTEXT_H +#endif + #ifdef HAVE_LOCALE_H # ifndef ENABLE_NLS /* The Solaris version of locale.h always includes libintl.h. If we have Index: include/elf/common.h --- include/elf/common.h.orig 2018-06-24 20:38:57.000000000 +0200 +++ include/elf/common.h 2018-08-10 20:38:12.272228000 +0200 @@ -514,6 +514,9 @@ #define SHT_SUNW_verdef 0x6ffffffd /* Versions defined by file */ #define SHT_SUNW_verneed 0x6ffffffe /* Versions needed by file */ #define SHT_SUNW_versym 0x6fffffff /* Symbol versions */ +#define SHT_SUNW_syminfo 0x6ffffffc /* Symbol information */ +#define SHT_SUNW_signature 0x6ffffff6 /* Solaris Cryptographic Framework: Digital Signature */ +#define SHT_SUNW_dof 0x6ffffff4 /* Solaris DTrace Object Format */ #define SHT_GNU_verdef SHT_SUNW_verdef #define SHT_GNU_verneed SHT_SUNW_verneed Index: ld/Makefile.in --- ld/Makefile.in.orig 2018-07-18 09:46:21.000000000 +0200 +++ ld/Makefile.in 2018-08-10 20:38:12.272661000 +0200 @@ -563,7 +563,7 @@ # We put the scripts in the directory $(scriptdir)/ldscripts. # We can't put the scripts in $(datadir) because the SEARCH_DIR # directives need to be different for native and cross linkers. -scriptdir = $(tooldir)/lib +scriptdir = $(libdir) BASEDIR = $(srcdir)/.. BFDDIR = $(BASEDIR)/bfd INCDIR = $(BASEDIR)/include Index: ld/ld.h --- ld/ld.h.orig 2018-06-24 20:38:57.000000000 +0200 +++ ld/ld.h 2018-08-10 20:38:12.272804000 +0200 @@ -21,6 +21,11 @@ #ifndef LD_H #define LD_H +#ifndef ENABLE_NLS +# define _LIBINTL_H +# define _LIBGETTEXT_H +#endif + #ifdef HAVE_LOCALE_H #endif #ifndef SEEK_CUR Index: ld/scripttempl/elf.sc --- ld/scripttempl/elf.sc.orig 2018-07-11 17:43:55.000000000 +0200 +++ ld/scripttempl/elf.sc 2018-08-10 20:38:12.273155000 +0200 @@ -637,9 +637,9 @@ ${SDATA_GOT+${OTHER_GOT_SECTIONS}} ${DATA_SDATA-${SDATA}} ${DATA_SDATA-${OTHER_SDATA_SECTIONS}} - ${RELOCATING+${DATA_END_SYMBOLS-${CREATE_SHLIB+PROVIDE (}${USER_LABEL_PREFIX}_edata = .${CREATE_SHLIB+)}; PROVIDE (${USER_LABEL_PREFIX}edata = .);}} + ${RELOCATING+${DATA_END_SYMBOLS-${USER_LABEL_PREFIX}_edata = .; PROVIDE (${USER_LABEL_PREFIX}edata = .);}} ${RELOCATING+. = .;} - ${RELOCATING+${CREATE_SHLIB+PROVIDE (}${USER_LABEL_PREFIX}__bss_start = .${CREATE_SHLIB+)};} + ${RELOCATING+${USER_LABEL_PREFIX}__bss_start = .;} ${RELOCATING+${OTHER_BSS_SYMBOLS}} ${DATA_SDATA-${SBSS}} ${BSS_PLT+${PLT}} @@ -672,7 +672,7 @@ ${LARGE_BSS_AFTER_BSS-${LARGE_BSS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} ${RELOCATING+${OTHER_END_SYMBOLS}} - ${RELOCATING+${END_SYMBOLS-${CREATE_SHLIB+PROVIDE (}${USER_LABEL_PREFIX}_end = .${CREATE_SHLIB+)}; PROVIDE (${USER_LABEL_PREFIX}end = .);}} + ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}} ${RELOCATING+${DATA_SEGMENT_END}} ${TINY_DATA_SECTION} ${TINY_BSS_SECTION} Index: libiberty/fibheap.c --- libiberty/fibheap.c.orig 2018-06-24 20:38:58.000000000 +0200 +++ libiberty/fibheap.c 2018-08-10 20:38:12.272963000 +0200 @@ -34,8 +34,11 @@ #include "libiberty.h" #include "fibheap.h" - +#ifdef LONG_MIN #define FIBHEAPKEY_MIN LONG_MIN +#else +#define FIBHEAPKEY_MIN (-0x7fffffffL - 1) +#endif static void fibheap_ins_root (fibheap_t, fibnode_t); static void fibheap_rem_root (fibheap_t, fibnode_t);