[arch-commits] Commit in binutils/trunk (4 files)

Evangelos Foutras foutrelis at archlinux.org
Tue Aug 7 15:00:07 UTC 2018


    Date: Tuesday, August 7, 2018 @ 15:00:07
  Author: foutrelis
Revision: 331111

Remove old patches

Deleted:
  binutils/trunk/0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch
  binutils/trunk/0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch
  binutils/trunk/0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch
  binutils/trunk/0004-PR22868-Fix-case-where-IR-file-provides-symbol-visibility.patch

----------------------------------------------------------------------+
 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 --------
 0004-PR22868-Fix-case-where-IR-file-provides-symbol-visibility.patch |  275 ----------
 4 files changed, 682 deletions(-)

Deleted: 0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch
===================================================================
--- 0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch	2018-08-07 14:57:56 UTC (rev 331110)
+++ 0001-PR22741-objcopy-segfault-on-fuzzed-COFF-object.patch	2018-08-07 15:00:07 UTC (rev 331111)
@@ -1,29 +0,0 @@
-From eb77f6a4621795367a39cdd30957903af9dbb815 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra at 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
-

Deleted: 0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch
===================================================================
--- 0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch	2018-08-07 14:57:56 UTC (rev 331110)
+++ 0002-PR22829-objcopy-strip-removes-PT_GNU_RELRO-from-lld-.patch	2018-08-07 15:00:07 UTC (rev 331111)
@@ -1,145 +0,0 @@
-From 3b56a1358768563d9cf320559ebdedfb30f122dd Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra at 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
-

Deleted: 0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch
===================================================================
--- 0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch	2018-08-07 14:57:56 UTC (rev 331110)
+++ 0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch	2018-08-07 15:00:07 UTC (rev 331111)
@@ -1,233 +0,0 @@
-From d957f81cb38d7e82ae546cd03265ee3087ba8a85 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra at 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
-

Deleted: 0004-PR22868-Fix-case-where-IR-file-provides-symbol-visibility.patch
===================================================================
--- 0004-PR22868-Fix-case-where-IR-file-provides-symbol-visibility.patch	2018-08-07 14:57:56 UTC (rev 331110)
+++ 0004-PR22868-Fix-case-where-IR-file-provides-symbol-visibility.patch	2018-08-07 15:00:07 UTC (rev 331111)
@@ -1,275 +0,0 @@
-From 330b90b5ffbbc20c5de6ae6c7f60c40fab2e7a4f Mon Sep 17 00:00:00 2001
-From: Cary Coutant <ccoutant at gmail.com>
-Date: Fri, 23 Mar 2018 09:03:34 -0700
-Subject: [PATCH] Fix case where IR file provides symbol visibility but
- replacement file does not.
-
-In PR 22868, two IR files provide conflicting visibility for a symbol.
-When a def with PROTECTED visibility is seen after a def with DEFAULT
-visibility, gold does not override the visibility. Later, if the
-replacement object define the symbol with DEFAULT visibility, the symbol
-remains DEFAULT. This was caused by a recent change to allow multiply-defined
-absolute symbols, combined with the fact that the plugin framework was using
-SHN_ABS as the section index for placeholder symbols. The solution is to
-use a real (but arbitrary) section index.
-
-gold/
-	PR gold/22868
-	* plugin.cc (Sized_pluginobj::do_add_symbols): Use a real section
-	index instead of SHN_ABS for defined symbols.
-	* testsuite/Makefile.am (plugin_pr22868): New test case.
-	* testsuite/Makefile.in: Regenerate
-	* testsuite/plugin_pr22868.sh: New test script.
-	* testsuite/plugin_pr22868_a.c: New source file.
-	* testsuite/plugin_pr22868_b.c: New source file.
----
- gold/plugin.cc                    |  3 ++-
- gold/testsuite/Makefile.am        | 21 ++++++++++++++++++
- gold/testsuite/Makefile.in        | 28 +++++++++++++++++++++---
- gold/testsuite/plugin_pr22868.sh  | 45 +++++++++++++++++++++++++++++++++++++++
- gold/testsuite/plugin_pr22868_a.c | 28 ++++++++++++++++++++++++
- gold/testsuite/plugin_pr22868_b.c | 39 +++++++++++++++++++++++++++++++++
- 6 files changed, 160 insertions(+), 4 deletions(-)
- create mode 100755 gold/testsuite/plugin_pr22868.sh
- create mode 100644 gold/testsuite/plugin_pr22868_a.c
- create mode 100644 gold/testsuite/plugin_pr22868_b.c
-
-diff --git a/gold/plugin.cc b/gold/plugin.cc
-index 02fef25..a59f19d 100644
---- a/gold/plugin.cc
-+++ b/gold/plugin.cc
-@@ -1144,7 +1144,8 @@ Sized_pluginobj<size, big_endian>::do_add_symbols(Symbol_table* symtab,
-         {
-         case LDPK_DEF:
-         case LDPK_WEAKDEF:
--          shndx = elfcpp::SHN_ABS;
-+          // We use an arbitrary section number for a defined symbol.
-+          shndx = 1;
-           break;
-         case LDPK_COMMON:
-           shndx = elfcpp::SHN_COMMON;
-diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
-index 16cae80..d086dad 100644
---- a/gold/testsuite/Makefile.am
-+++ b/gold/testsuite/Makefile.am
-@@ -2433,6 +2433,27 @@ plugin_section_alignment.so: plugin_section_alignment.o gcctestdir/ld
- plugin_section_alignment.o: plugin_section_alignment.cc
- 	$(CXXCOMPILE) -O0 -c -fpic -o $@ $<
- 
-+check_SCRIPTS += plugin_pr22868.sh
-+check_DATA += plugin_pr22868.stdout
-+MOSTLYCLEANFILES += plugin_pr22868.stdout
-+plugin_pr22868.stdout: plugin_pr22868.so
-+	$(TEST_READELF) -W --dyn-syms $< >$@ 2>/dev/null
-+plugin_pr22868.so: plugin_pr22868_a.o.syms plugin_pr22868_b.o.syms plugin_pr22868_b.o plugin_test.so gcctestdir/ld
-+	$(LINK) -Bgcctestdir/ -shared -Wl,--plugin,"./plugin_test.so" plugin_pr22868_a.o.syms plugin_pr22868_b.o.syms
-+plugin_pr22868_a.o.syms: plugin_pr22868_a.o
-+	$(TEST_READELF) -sW $< >$@ 2>/dev/null
-+# Generate the .syms file from an alternate version of the original source
-+# file, with a "protected" visibility attribute. We'll link with a
-+# "replacement" object that does not have that attribute.
-+plugin_pr22868_b.o.syms: plugin_pr22868_b_ir.o
-+	$(TEST_READELF) -sW $< >$@ 2>/dev/null
-+plugin_pr22868_a.o: plugin_pr22868_a.c
-+	$(COMPILE) -c -fpic -o $@ $<
-+plugin_pr22868_b_ir.o: plugin_pr22868_b.c
-+	$(COMPILE) -c -DIR -fpic -o $@ $<
-+plugin_pr22868_b.o: plugin_pr22868_b.c
-+	$(COMPILE) -c -fpic -o $@ $<
-+
- endif PLUGINS
- 
- check_PROGRAMS += exclude_libs_test
-diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
-index bbf8dc1..22940ca 100644
---- a/gold/testsuite/Makefile.in
-+++ b/gold/testsuite/Makefile.in
-@@ -591,16 +591,19 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at am__append_52 = unused.c \
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_final_layout \
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_layout_new_file \
-- at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_layout_with_alignment
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_layout_with_alignment \
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_pr22868.stdout
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at am__append_53 = plugin_final_layout.sh \
-- at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_layout_with_alignment.sh
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_layout_with_alignment.sh \
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_pr22868.sh
- 
- # Uses the plugin_final_layout.sh script above to avoid duplication
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at am__append_54 = plugin_final_layout.stdout \
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_final_layout_readelf.stdout \
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_layout_new_file.stdout \
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_layout_new_file_readelf.stdout \
-- at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_layout_with_alignment.stdout
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_layout_with_alignment.stdout \
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	plugin_pr22868.stdout
- @GCC_TRUE@@NATIVE_LINKER_TRUE at am__append_55 = exclude_libs_test \
- @GCC_TRUE@@NATIVE_LINKER_TRUE@	local_labels_test \
- @GCC_TRUE@@NATIVE_LINKER_TRUE@	discard_locals_test
-@@ -5299,6 +5302,8 @@ plugin_final_layout.sh.log: plugin_final_layout.sh
- 	@p='plugin_final_layout.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
- plugin_layout_with_alignment.sh.log: plugin_layout_with_alignment.sh
- 	@p='plugin_layout_with_alignment.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
-+plugin_pr22868.sh.log: plugin_pr22868.sh
-+	@p='plugin_pr22868.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
- exclude_libs_test.sh.log: exclude_libs_test.sh
- 	@p='exclude_libs_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
- discard_locals_test.sh.log: discard_locals_test.sh
-@@ -7086,6 +7091,23 @@ uninstall-am:
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	$(CXXLINK) -Bgcctestdir/ -shared plugin_section_alignment.o
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at plugin_section_alignment.o: plugin_section_alignment.cc
- @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	$(CXXCOMPILE) -O0 -c -fpic -o $@ $<
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at plugin_pr22868.stdout: plugin_pr22868.so
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	$(TEST_READELF) -W --dyn-syms $< >$@ 2>/dev/null
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at plugin_pr22868.so: plugin_pr22868_a.o.syms plugin_pr22868_b.o.syms plugin_pr22868_b.o plugin_test.so gcctestdir/ld
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	$(LINK) -Bgcctestdir/ -shared -Wl,--plugin,"./plugin_test.so" plugin_pr22868_a.o.syms plugin_pr22868_b.o.syms
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at plugin_pr22868_a.o.syms: plugin_pr22868_a.o
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	$(TEST_READELF) -sW $< >$@ 2>/dev/null
-+# Generate the .syms file from an alternate version of the original source
-+# file, with a "protected" visibility attribute. We'll link with a
-+# "replacement" object that does not have that attribute.
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at plugin_pr22868_b.o.syms: plugin_pr22868_b_ir.o
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	$(TEST_READELF) -sW $< >$@ 2>/dev/null
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at plugin_pr22868_a.o: plugin_pr22868_a.c
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	$(COMPILE) -c -fpic -o $@ $<
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at plugin_pr22868_b_ir.o: plugin_pr22868_b.c
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	$(COMPILE) -c -DIR -fpic -o $@ $<
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE at plugin_pr22868_b.o: plugin_pr22868_b.c
-+ at GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@	$(COMPILE) -c -fpic -o $@ $<
- @GCC_TRUE@@NATIVE_LINKER_TRUE at exclude_libs_test.syms: exclude_libs_test
- @GCC_TRUE@@NATIVE_LINKER_TRUE@	$(TEST_READELF) -sW $< >$@ 2>/dev/null
- @GCC_TRUE@@NATIVE_LINKER_TRUE at libexclude_libs_test_1.a: exclude_libs_test_1.o
-diff --git a/gold/testsuite/plugin_pr22868.sh b/gold/testsuite/plugin_pr22868.sh
-new file mode 100755
-index 0000000..72f364b
---- /dev/null
-+++ b/gold/testsuite/plugin_pr22868.sh
-@@ -0,0 +1,45 @@
-+#!/bin/sh
-+
-+# plugin_pr22868.sh -- a test case for the plugin API.
-+
-+# Copyright (C) 2018 Free Software Foundation, Inc.
-+# Written by Cary Coutant <ccoutant at google.com>.
-+
-+# This file is part of gold.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
-+# (at your option) any later version.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
-+# MA 02110-1301, USA.
-+
-+# This file goes with plugin_pr22868_a.c and plugin_pr22868_b.c,
-+# which check that if a symbol is declared PROTECTED in any IR file,
-+# it will remain PROTECTED in the output even if the replacement file(s)
-+# fail to declare it PROTECTED.
-+
-+check()
-+{
-+    if ! grep -q "$2" "$1"
-+    then
-+	echo "Did not find expected output in $1:"
-+	echo "   $2"
-+	echo ""
-+	echo "Actual output below:"
-+	cat "$1"
-+	exit 1
-+    fi
-+}
-+
-+check plugin_pr22868.stdout "PROTECTED.*foo"
-+
-+exit 0
-diff --git a/gold/testsuite/plugin_pr22868_a.c b/gold/testsuite/plugin_pr22868_a.c
-new file mode 100644
-index 0000000..86a9843
---- /dev/null
-+++ b/gold/testsuite/plugin_pr22868_a.c
-@@ -0,0 +1,28 @@
-+/* plugin_pr22868_a.c -- a test case for the plugin API with GC.
-+
-+   Copyright (C) 2018 Free Software Foundation, Inc.
-+   Written by Cary Coutant <ccoutant at gmail.com>.
-+
-+   This file is part of gold.
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program; if not, write to the Free Software
-+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
-+   MA 02110-1301, USA.  */
-+
-+int foo(int i) __attribute__ (( weak ));
-+
-+int foo(int i)
-+{
-+  return i + 1;
-+}
-diff --git a/gold/testsuite/plugin_pr22868_b.c b/gold/testsuite/plugin_pr22868_b.c
-new file mode 100644
-index 0000000..92d2145
---- /dev/null
-+++ b/gold/testsuite/plugin_pr22868_b.c
-@@ -0,0 +1,39 @@
-+/* plugin_pr22868_b_ir.c -- a test case for the plugin API with GC.
-+
-+   Copyright (C) 2018 Free Software Foundation, Inc.
-+   Written by Cary Coutant <ccoutant at gmail.com>.
-+
-+   This file is part of gold.
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program; if not, write to the Free Software
-+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
-+   MA 02110-1301, USA.  */
-+
-+/* This file is compiled with -DIR to generate the .syms file,
-+   and without -DIR for use as the replacement object.
-+   The .syms file declares foo with protected visibility, but
-+   the replacement file does not.  */
-+
-+#ifdef IR
-+#define PROTECTED __attribute__ (( visibility ("protected") ))
-+#else
-+#define PROTECTED
-+#endif
-+
-+int foo(int i) __attribute__ (( weak )) PROTECTED;
-+
-+int foo(int i)
-+{
-+  return i + 1;
-+}
--- 
-2.9.3
-



More information about the arch-commits mailing list