Date: Wednesday, May 2, 2018 @ 20:36:47
  Author: bpiotrowski
Revision: 323302

archrelease: copy trunk to staging-x86_64

Added:
  binutils/repos/staging-x86_64/
  
binutils/repos/staging-x86_64/0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch
    (from rev 323301, 
binutils/trunk/0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch)
  
binutils/repos/staging-x86_64/0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch
    (from rev 323301, 
binutils/trunk/0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch)
  
binutils/repos/staging-x86_64/0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch
    (from rev 323301, 
binutils/trunk/0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch)
  binutils/repos/staging-x86_64/PKGBUILD
    (from rev 323301, binutils/trunk/PKGBUILD)

-----------------------------------------------------------------+
 0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch       |   29 +
 0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch |  145 ++++++
 0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch          |  233 
++++++++++
 PKGBUILD                                                        |   94 ++++
 4 files changed, 501 insertions(+)

Copied: 
binutils/repos/staging-x86_64/0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch
 (from rev 323301, 
binutils/trunk/0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch)
===================================================================
--- staging-x86_64/0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch    
                        (rev 0)
+++ staging-x86_64/0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch    
2018-05-02 20:36:47 UTC (rev 323302)
@@ -0,0 +1,29 @@
+From eb77f6a4621795367a39cdd30957903af9dbb815 Mon Sep 17 00:00:00 2001
+From: Alan Modra <amo...@gmail.com>
+Date: Sat, 27 Jan 2018 08:19:33 +1030
+Subject: [PATCH] PR22741, objcopy segfault on fuzzed COFF object
+
+       PR 22741
+       * coffgen.c (coff_pointerize_aux): Ensure auxent tagndx is in
+       range before converting to a symbol table pointer.
+---
+ bfd/coffgen.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/bfd/coffgen.c b/bfd/coffgen.c
+index b2410873d0..4f90eaddd9 100644
+--- a/bfd/coffgen.c
++++ b/bfd/coffgen.c
+@@ -1555,7 +1555,8 @@ coff_pointerize_aux (bfd *abfd,
+     }
+   /* A negative tagndx is meaningless, but the SCO 3.2v4 cc can
+      generate one, so we must be careful to ignore it.  */
+-  if (auxent->u.auxent.x_sym.x_tagndx.l > 0)
++  if ((unsigned long) auxent->u.auxent.x_sym.x_tagndx.l
++      < obj_raw_syment_count (abfd))
+     {
+       auxent->u.auxent.x_sym.x_tagndx.p =
+       table_base + auxent->u.auxent.x_sym.x_tagndx.l;
+-- 
+2.16.2
+

Copied: 
binutils/repos/staging-x86_64/0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch
 (from rev 323301, 
binutils/trunk/0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch)
===================================================================
--- 
staging-x86_64/0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch  
                            (rev 0)
+++ 
staging-x86_64/0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch  
    2018-05-02 20:36:47 UTC (rev 323302)
@@ -0,0 +1,145 @@
+From 3b56a1358768563d9cf320559ebdedfb30f122dd Mon Sep 17 00:00:00 2001
+From: Alan Modra <amo...@gmail.com>
+Date: Mon, 12 Feb 2018 13:06:07 +1030
+Subject: [PATCH] PR22829, objcopy/strip removes PT_GNU_RELRO from lld binaries
+
+lld lays out the relro segment differently to GNU ld, not bothering to
+include the first few bytes of .got.plt and padding out to a page at
+the end of the segment.  This patch teaches binutils to recognize the
+different (and somewhat inferior) layout as valid.
+
+bfd/
+       PR 22829
+       * elf.c (assign_file_positions_for_non_load_sections): Rewrite
+       PT_GNU_RELRO setup.
+ld/
+       * testsuite/ld-x86-64/pr14207.d: Adjust relro p_filesz.
+
+(cherry picked from commit f2731e0c374e5323ce4cdae2bcc7b7fe22da1a6f)
+---
+ bfd/elf.c                        | 78 ++++++++++++++++++++++++++--------------
+ ld/testsuite/ld-x86-64/pr14207.d |  2 +-
+ 2 files changed, 52 insertions(+), 28 deletions(-)
+
+diff --git a/bfd/elf.c b/bfd/elf.c
+index bbaab26918..f5a230cd77 100644
+--- a/bfd/elf.c
++++ b/bfd/elf.c
+@@ -5826,50 +5826,74 @@ assign_file_positions_for_non_load_sections (bfd *abfd,
+     {
+       if (p->p_type == PT_GNU_RELRO)
+       {
+-        const Elf_Internal_Phdr *lp;
+-        struct elf_segment_map *lm;
++        bfd_vma start, end;
+ 
+         if (link_info != NULL)
+           {
+             /* During linking the range of the RELRO segment is passed
+-               in link_info.  */
++               in link_info.  Note that there may be padding between
++               relro_start and the first RELRO section.  */
++            start = link_info->relro_start;
++            end = link_info->relro_end;
++          }
++        else if (m->count != 0)
++          {
++            if (!m->p_size_valid)
++              abort ();
++            start = m->sections[0]->vma;
++            end = start + m->p_size;
++          }
++        else
++          {
++            start = 0;
++            end = 0;
++          }
++
++        if (start < end)
++          {
++            struct elf_segment_map *lm;
++            const Elf_Internal_Phdr *lp;
++            unsigned int i;
++
++            /* Find a LOAD segment containing a section in the RELRO
++               segment.  */
+             for (lm = elf_seg_map (abfd), lp = phdrs;
+                  lm != NULL;
+                  lm = lm->next, lp++)
+               {
+                 if (lp->p_type == PT_LOAD
+-                    && lp->p_vaddr < link_info->relro_end
+                     && lm->count != 0
+-                    && lm->sections[0]->vma >= link_info->relro_start)
++                    && lm->sections[lm->count - 1]->vma >= start
++                    && lm->sections[0]->vma < end)
+                   break;
+               }
+-
+             BFD_ASSERT (lm != NULL);
+-          }
+-        else
+-          {
+-            /* Otherwise we are copying an executable or shared
+-               library, but we need to use the same linker logic.  */
+-            for (lp = phdrs; lp < phdrs + count; ++lp)
++
++            /* Find the section starting the RELRO segment.  */
++            for (i = 0; i < lm->count; i++)
+               {
+-                if (lp->p_type == PT_LOAD
+-                    && lp->p_paddr == p->p_paddr)
++                asection *s = lm->sections[i];
++                if (s->vma >= start
++                    && s->vma < end
++                    && s->size != 0)
+                   break;
+               }
+-          }
++            BFD_ASSERT (i < lm->count);
++
++            p->p_vaddr = lm->sections[i]->vma;
++            p->p_paddr = lm->sections[i]->lma;
++            p->p_offset = lm->sections[i]->filepos;
++            p->p_memsz = end - p->p_vaddr;
++            p->p_filesz = p->p_memsz;
++
++            /* The RELRO segment typically ends a few bytes into
++               .got.plt but other layouts are possible.  In cases
++               where the end does not match any loaded section (for
++               instance is in file padding), trim p_filesz back to
++               correspond to the end of loaded section contents.  */
++            if (p->p_filesz > lp->p_vaddr + lp->p_filesz - p->p_vaddr)
++              p->p_filesz = lp->p_vaddr + lp->p_filesz - p->p_vaddr;
+ 
+-        if (lp < phdrs + count)
+-          {
+-            p->p_vaddr = lp->p_vaddr;
+-            p->p_paddr = lp->p_paddr;
+-            p->p_offset = lp->p_offset;
+-            if (link_info != NULL)
+-              p->p_filesz = link_info->relro_end - lp->p_vaddr;
+-            else if (m->p_size_valid)
+-              p->p_filesz = m->p_size;
+-            else
+-              abort ();
+-            p->p_memsz = p->p_filesz;
+             /* Preserve the alignment and flags if they are valid. The
+                gold linker generates RW/4 for the PT_GNU_RELRO section.
+                It is better for objcopy/strip to honor these attributes
+diff --git a/ld/testsuite/ld-x86-64/pr14207.d 
b/ld/testsuite/ld-x86-64/pr14207.d
+index f6558e7cd7..41f92b8bd8 100644
+--- a/ld/testsuite/ld-x86-64/pr14207.d
++++ b/ld/testsuite/ld-x86-64/pr14207.d
+@@ -13,7 +13,7 @@ Program Headers:
+   LOAD           0x000000 0x0000000000000000 0x0000000000000000 0x0001c8 
0x0001c8 R   0x200000
+   LOAD           0x000b.8 0x0000000000200b.8 0x0000000000200b.8 0x0004.0 
0x000c.8 RW  0x200000
+   DYNAMIC        0x000b.0 0x0000000000200b.0 0x0000000000200b.0 0x0001.0 
0x0001.0 RW  0x8
+-  GNU_RELRO      0x000b.8 0x0000000000200b.8 0x0000000000200b.8 0x0004.8 
0x0004.8 R   0x1
++  GNU_RELRO      0x000b.8 0x0000000000200b.8 0x0000000000200b.8 0x0004.0 
0x0004.8 R   0x1
+ 
+  Section to Segment mapping:
+   Segment Sections...
+-- 
+2.16.2
+

Copied: 
binutils/repos/staging-x86_64/0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch
 (from rev 323301, 
binutils/trunk/0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch)
===================================================================
--- staging-x86_64/0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch       
                        (rev 0)
+++ staging-x86_64/0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch       
2018-05-02 20:36:47 UTC (rev 323302)
@@ -0,0 +1,233 @@
+From d957f81cb38d7e82ae546cd03265ee3087ba8a85 Mon Sep 17 00:00:00 2001
+From: Alan Modra <amo...@gmail.com>
+Date: Tue, 13 Feb 2018 14:09:48 +1030
+Subject: [PATCH] PR22836, "-r -s" doesn't work with -g3 using GCC 7
+
+This fixes the case where all of a group is removed with ld -r, the
+situation in the PR, and failures where part of a group is removed
+that contain relocs.
+
+bfd/
+       PR 22836
+       * elf.c (_bfd_elf_fixup_group_sections): Account for removed
+       relocation sections.  If size reduces to just the flag word,
+       remove that too and mark with SEC_EXCLUDE.
+       * elflink.c (bfd_elf_final_link): Strip empty group sections.
+binutils/
+       * testsuite/binutils-all/group-7.s,
+       * testsuite/binutils-all/group-7a.d,
+       * testsuite/binutils-all/group-7b.d,
+       * testsuite/binutils-all/group-7c.d: New tests.
+       * testsuite/binutils-all/objcopy.exp: Run them.
+ld/
+       * testsuite/ld-elf/pr22836-2.d,
+       * testsuite/ld-elf/pr22836-2.s: New test.
+
+(cherry picked from commit 6e5e9d58c1eeef5677c90886578a895cb8c164c5)
+---
+ bfd/ChangeLog                               | 11 +++++++++++
+ bfd/elf.c                                   | 25 +++++++++++++++++++++----
+ bfd/elflink.c                               |  7 +++++++
+ binutils/ChangeLog                          | 12 ++++++++++++
+ binutils/testsuite/binutils-all/group-7.s   |  6 ++++++
+ binutils/testsuite/binutils-all/group-7a.d  | 16 ++++++++++++++++
+ binutils/testsuite/binutils-all/group-7b.d  | 19 +++++++++++++++++++
+ binutils/testsuite/binutils-all/group-7c.d  |  8 ++++++++
+ binutils/testsuite/binutils-all/objcopy.exp |  3 +++
+ ld/ChangeLog                                |  9 +++++++++
+ ld/testsuite/ld-elf/pr22836-2.d             |  7 +++++++
+ ld/testsuite/ld-elf/pr22836-2.s             |  7 +++++++
+ 12 files changed, 126 insertions(+), 4 deletions(-)
+ create mode 100644 binutils/testsuite/binutils-all/group-7.s
+ create mode 100644 binutils/testsuite/binutils-all/group-7a.d
+ create mode 100644 binutils/testsuite/binutils-all/group-7b.d
+ create mode 100644 binutils/testsuite/binutils-all/group-7c.d
+ create mode 100644 ld/testsuite/ld-elf/pr22836-2.d
+ create mode 100644 ld/testsuite/ld-elf/pr22836-2.s
+
+diff --git a/bfd/elf.c b/bfd/elf.c
+index 325bdd5..e95c8a9 100644
+--- a/bfd/elf.c
++++ b/bfd/elf.c
+@@ -7579,7 +7579,16 @@ _bfd_elf_fixup_group_sections (bfd *ibfd, asection 
*discarded)
+              but the SHT_GROUP section is, then adjust its size.  */
+           else if (s->output_section == discarded
+                    && isec->output_section != discarded)
+-            removed += 4;
++            {
++              struct bfd_elf_section_data *elf_sec = elf_section_data (s);
++              removed += 4;
++              if (elf_sec->rel.hdr != NULL
++                  && (elf_sec->rel.hdr->sh_flags & SHF_GROUP) != 0)
++                removed += 4;
++              if (elf_sec->rela.hdr != NULL
++                  && (elf_sec->rela.hdr->sh_flags & SHF_GROUP) != 0)
++                removed += 4;
++            }
+           s = elf_next_in_group (s);
+           if (s == first)
+             break;
+@@ -7589,18 +7598,26 @@ _bfd_elf_fixup_group_sections (bfd *ibfd, asection 
*discarded)
+           if (discarded != NULL)
+             {
+               /* If we've been called for ld -r, then we need to
+-                 adjust the input section size.  This function may
+-                 be called multiple times, so save the original
+-                 size.  */
++                 adjust the input section size.  */
+               if (isec->rawsize == 0)
+                 isec->rawsize = isec->size;
+               isec->size = isec->rawsize - removed;
++              if (isec->size <= 4)
++                {
++                  isec->size = 0;
++                  isec->flags |= SEC_EXCLUDE;
++                }
+             }
+           else
+             {
+               /* Adjust the output section size when called from
+                  objcopy. */
+               isec->output_section->size -= removed;
++              if (isec->output_section->size <= 4)
++                {
++                  isec->output_section->size = 0;
++                  isec->output_section->flags |= SEC_EXCLUDE;
++                }
+             }
+         }
+       }
+diff --git a/bfd/elflink.c b/bfd/elflink.c
+index 72aa3ac..69cb5ab 100644
+--- a/bfd/elflink.c
++++ b/bfd/elflink.c
+@@ -11618,6 +11618,13 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info 
*info)
+         else
+           o->flags |= SEC_EXCLUDE;
+       }
++      else if ((o->flags & SEC_GROUP) != 0 && o->size == 0)
++      {
++        /* Remove empty group section from linker output.  */
++        o->flags |= SEC_EXCLUDE;
++        bfd_section_list_remove (abfd, o);
++        abfd->section_count--;
++      }
+     }
+ 
+   /* Count up the number of relocations we will output for each output
+diff --git a/binutils/testsuite/binutils-all/group-7.s 
b/binutils/testsuite/binutils-all/group-7.s
+new file mode 100644
+index 0000000..5028afc
+--- /dev/null
++++ b/binutils/testsuite/binutils-all/group-7.s
+@@ -0,0 +1,6 @@
++      .section        .data.foo,"awG",%progbits,foo,comdat
++here:
++      .dc.a   here
++
++      .section        .data2.foo,"awG",%progbits,foo,comdat
++      .dc.a   0
+diff --git a/binutils/testsuite/binutils-all/group-7a.d 
b/binutils/testsuite/binutils-all/group-7a.d
+new file mode 100644
+index 0000000..fa8db60
+--- /dev/null
++++ b/binutils/testsuite/binutils-all/group-7a.d
+@@ -0,0 +1,16 @@
++#name: copy removing reloc group member
++#source: group-7.s
++#PROG: objcopy
++#DUMPPROG: readelf
++#objcopy: --remove-section .data.foo
++#readelf: -Sg --wide
++
++#...
++  \[[ 0-9]+\] \.group[ \t]+GROUP[ \t]+.*
++#...
++  \[[ 0-9]+\] \.data2\.foo[ \t]+PROGBITS[ \t0-9a-f]+WAG.*
++#...
++COMDAT group section \[[ 0-9]+\] `\.group' \[foo\] contains 1 section.*
++   \[Index\]    Name
++   \[[ 0-9]+\]   \.data2\.foo
++#pass
+diff --git a/binutils/testsuite/binutils-all/group-7b.d 
b/binutils/testsuite/binutils-all/group-7b.d
+new file mode 100644
+index 0000000..b674545
+--- /dev/null
++++ b/binutils/testsuite/binutils-all/group-7b.d
+@@ -0,0 +1,19 @@
++#name: copy removing non-reloc group member
++#source: group-7.s
++#PROG: objcopy
++#DUMPPROG: readelf
++#objcopy: --remove-section .data2.foo
++#readelf: -Sg --wide
++
++#...
++  \[[ 0-9]+\] \.group[ \t]+GROUP[ \t]+.*
++#...
++  \[[ 0-9]+\] \.data\.foo[ \t]+PROGBITS[ \t0-9a-f]+WAG.*
++#...
++  \[[ 0-9]+\] \.rela?\.data\.foo[ \t]+RELA?[ \t0-9a-f]+IG.*
++#...
++COMDAT group section \[[ 0-9]+\] `\.group' \[foo\] contains 2 sections:
++   \[Index\]    Name
++   \[[ 0-9]+\]   \.data\.foo
++   \[[ 0-9]+\]   \.rela?\.data\.foo
++#pass
+diff --git a/binutils/testsuite/binutils-all/group-7c.d 
b/binutils/testsuite/binutils-all/group-7c.d
+new file mode 100644
+index 0000000..83e9115
+--- /dev/null
++++ b/binutils/testsuite/binutils-all/group-7c.d
+@@ -0,0 +1,8 @@
++#name: copy removing reloc and non-reloc group member
++#source: group-7.s
++#PROG: objcopy
++#DUMPPROG: readelf
++#objcopy: -R .data.foo -R .data2.foo
++#readelf: -g --wide
++
++There are no section groups in this file\.
+diff --git a/binutils/testsuite/binutils-all/objcopy.exp 
b/binutils/testsuite/binutils-all/objcopy.exp
+index 377f88c..f4a7692 100644
+--- a/binutils/testsuite/binutils-all/objcopy.exp
++++ b/binutils/testsuite/binutils-all/objcopy.exp
+@@ -1051,6 +1051,9 @@ if [is_elf_format] {
+     objcopy_test_readelf "GNU_MBIND section" mbind1.s
+     run_dump_test "group-5"
+     run_dump_test "group-6"
++    run_dump_test "group-7a"
++    run_dump_test "group-7b"
++    run_dump_test "group-7c"
+     run_dump_test "copy-1"
+     run_dump_test "note-1"
+     if [is_elf64 tmpdir/bintest.o] {
+diff --git a/ld/testsuite/ld-elf/pr22836-2.d b/ld/testsuite/ld-elf/pr22836-2.d
+new file mode 100644
+index 0000000..10133e4
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr22836-2.d
+@@ -0,0 +1,7 @@
++#source: pr22836-2.s
++#ld: -r -S
++#readelf: -g --wide
++
++group section \[[ 0-9]+\] `\.group' \[foo\] contains 1 section.*
++   \[Index\]    Name
++   \[[ 0-9]+\]   \.comment
+diff --git a/ld/testsuite/ld-elf/pr22836-2.s b/ld/testsuite/ld-elf/pr22836-2.s
+new file mode 100644
+index 0000000..77cd83a
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr22836-2.s
+@@ -0,0 +1,7 @@
++      .section        .debug_macro,"G",%progbits,foo
++      .long   .LASF0
++.LASF0:
++      .string "__STDC__ 1"
++
++      .section        .comment,"G",%progbits,foo
++      .asciz "hi"
+-- 
+2.9.3
+

Copied: binutils/repos/staging-x86_64/PKGBUILD (from rev 323301, 
binutils/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD                             (rev 0)
+++ staging-x86_64/PKGBUILD     2018-05-02 20:36:47 UTC (rev 323302)
@@ -0,0 +1,94 @@
+# $Id$
+# Maintainer:  Bartłomiej Piotrowski <bpiotrow...@archlinux.org>
+# Contributor: Allan McRae <al...@archlinux.org>
+
+# toolchain build order: 
linux-api-headers->glibc->binutils->gcc->binutils->glibc
+
+pkgname=binutils
+pkgver=2.30
+pkgrel=4
+pkgdesc='A set of programs to assemble and manipulate binary and object files'
+arch=(x86_64)
+url='http://www.gnu.org/software/binutils/'
+license=(GPL)
+groups=(base-devel)
+depends=(glibc zlib)
+checkdepends=(dejagnu bc)
+conflicts=(binutils-multilib)
+replaces=(binutils-multilib)
+options=(staticlibs !distcc !ccache)
+source=(https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.xz{,.sig}
+        0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch
+        0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch
+        0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch)
+validpgpkeys=(3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F)
+md5sums=('ffc476dd46c96f932875d1b2e27e929f'
+         'SKIP'
+         '469164f3c93a0e92a697537b60c9806c'
+         '0c679b37e90fb23de60a4d28329b956a'
+         '53b5682e09c0a27e9994c3efdfe01d29')
+
+prepare() {
+  mkdir -p binutils-build
+
+  #cd binutils-gdb
+  cd binutils-$pkgver
+
+  # hack! - libiberty configure tests for header files using "$CPP $CPPFLAGS"
+  sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure
+
+  # https://sourceware.org/bugzilla/show_bug.cgi?id=22741
+  patch -p1 -i 
"$srcdir/0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch"
+
+  # https://sourceware.org/bugzilla/show_bug.cgi?id=22829
+  patch -p1 -i 
"$srcdir/0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch"
+
+  # https://sourceware.org/bugzilla/show_bug.cgi?id=22836
+  patch -p1 -i "$srcdir/0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch"
+}
+
+build() {
+  cd binutils-build
+
+  "$srcdir/binutils-$pkgver/configure" \
+    --prefix=/usr \
+    --with-lib-path=/usr/lib:/usr/local/lib \
+    --with-bugurl=https://bugs.archlinux.org/ \
+    --enable-deterministic-archives \
+    --enable-gold \
+    --enable-ld=default \
+    --enable-lto \
+    --enable-plugins \
+    --enable-relro \
+    --enable-shared \
+    --enable-targets=x86_64-pep \
+    --enable-threads \
+    --disable-gdb \
+    --disable-werror \
+    --with-pic \
+    --with-system-zlib
+
+  make configure-host
+  make tooldir=/usr
+}
+
+check() {
+  cd binutils-build
+  
+  # unset LDFLAGS as testsuite makes assumptions about which ones are active
+  # ignore failures in gold testsuite...
+  make -k LDFLAGS="" check || true
+}
+
+package() {
+  cd binutils-build
+  make prefix="$pkgdir/usr" tooldir="$pkgdir/usr" install
+
+  # Remove unwanted files
+  rm -f "$pkgdir"/usr/share/man/man1/{dlltool,nlmconv,windres,windmc}*
+
+  # No shared linking to these files outside binutils
+  rm -f "$pkgdir"/usr/lib/lib{bfd,opcodes}.so
+  echo 'INPUT( /usr/lib/libbfd.a -liberty -lz -ldl )' > 
"$pkgdir/usr/lib/libbfd.so"
+  echo 'INPUT( /usr/lib/libopcodes.a -lbfd )' > "$pkgdir/usr/lib/libopcodes.so"
+}

Reply via email to