From b2e18d3ea300f7491705b6e86a7cc3d6366e3b1f Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 30 Nov 2021 20:40:38 -0800
Subject: [PATCH] elf: Discard input .note.gnu.build-id sections

1. Discard input .note.gnu.build-id sections.
2. Clear the build ID field before writing.
3. Use bfd_make_section_anyway_with_flags to create the output
.note.gnu.build-id section.

	PR ld/28639
	* ldelf.c (ldelf_after_open): Discard input .note.gnu.build-id
	sections, excluding the first one.
	(write_build_id): Clear the build ID field before writing.
	(ldelf_setup_build_id): Use bfd_make_section_anyway_with_flags
	to create the output .note.gnu.build-id section.
	* testsuite/ld-elf/build-id.exp: New file.
	* testsuite/ld-elf/pr28639a.rd: Likewise.
	* testsuite/ld-elf/pr28639b.rd: Likewise.
	* testsuite/ld-elf/pr28639c.rd: Likewise.
	* testsuite/ld-elf/pr28639d.rd: Likewise.

Upstream-Status: Backport

Reference to upstream patch:
[https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=1f1d0f8888a6c944e612b416a2a6e11abcf5199f]
---
 ld/ldelf.c                       | 15 ++++++-
 ld/testsuite/ld-elf/build-id.exp | 77 ++++++++++++++++++++++++++++++++
 ld/testsuite/ld-elf/pr28639a.rd  |  6 +++
 ld/testsuite/ld-elf/pr28639b.rd  |  6 +++
 ld/testsuite/ld-elf/pr28639c.rd  | 10 +++++
 ld/testsuite/ld-elf/pr28639d.rd  |  4 ++
 6 files changed, 117 insertions(+), 1 deletion(-)
 create mode 100644 ld/testsuite/ld-elf/build-id.exp
 create mode 100644 ld/testsuite/ld-elf/pr28639a.rd
 create mode 100644 ld/testsuite/ld-elf/pr28639b.rd
 create mode 100644 ld/testsuite/ld-elf/pr28639c.rd
 create mode 100644 ld/testsuite/ld-elf/pr28639d.rd

diff --git a/ld/ldelf.c b/ld/ldelf.c
index 21e655bb55c..8501d98b48f 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -1043,6 +1043,15 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
   /* Do not allow executable files to be used as inputs to the link.  */
   for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
     {
+      /* Discard input .note.gnu.build-id sections.  */
+      s = bfd_get_section_by_name (abfd, ".note.gnu.build-id");
+      while (s != NULL)
+	{
+	  if (s != elf_tdata (link_info.output_bfd)->o->build_id.sec)
+	    s->flags |= SEC_EXCLUDE;
+	  s = bfd_get_next_section_by_name (NULL, s);
+	}
+
       if (abfd->xvec->flavour == bfd_target_elf_flavour
 	  && !bfd_input_just_syms (abfd)
 	  && elf_tdata (abfd) != NULL
@@ -1387,6 +1396,9 @@ write_build_id (bfd *abfd)
   id_bits = contents + size;
   size = asec->size - size;
 
+  /* Clear the build ID field.  */
+  memset (id_bits, 0, size);
+
   bfd_h_put_32 (abfd, sizeof "GNU", &e_note->namesz);
   bfd_h_put_32 (abfd, size, &e_note->descsz);
   bfd_h_put_32 (abfd, NT_GNU_BUILD_ID, &e_note->type);
@@ -1418,7 +1430,8 @@ ldelf_setup_build_id (bfd *ibfd)
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_IN_MEMORY
 	   | SEC_LINKER_CREATED | SEC_READONLY | SEC_DATA);
-  s = bfd_make_section_with_flags (ibfd, ".note.gnu.build-id", flags);
+  s = bfd_make_section_anyway_with_flags (ibfd, ".note.gnu.build-id",
+					  flags);
   if (s != NULL && bfd_set_section_alignment (s, 2))
     {
       struct elf_obj_tdata *t = elf_tdata (link_info.output_bfd);
diff --git a/ld/testsuite/ld-elf/build-id.exp b/ld/testsuite/ld-elf/build-id.exp
new file mode 100644
index 00000000000..19c22a75c4d
--- /dev/null
+++ b/ld/testsuite/ld-elf/build-id.exp
@@ -0,0 +1,77 @@
+# Expect script for --build-id tests.
+#   Copyright (C) 2021 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# 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.
+#
+
+# Exclude non-ELF targets.
+
+if ![is_elf_format] {
+    return
+}
+
+if { [istarget frv-*-*] || [istarget lm32-*-*] } {
+    return
+}
+
+if { !([istarget *-*-linux*]
+       || [istarget arm*-*-uclinuxfdpiceabi]
+       || [istarget *-*-nacl*]
+       || [istarget *-*-gnu*]) } then {
+    return
+}
+
+run_ld_link_tests [list \
+    [list \
+	"pr28639a.o" \
+	"-r --build-id=md5" \
+	"" \
+	"" \
+	{start.s} \
+	{{readelf {--notes} pr28639a.rd}} \
+	"pr28639a.o" \
+    ] \
+    [list \
+	"pr28639a.o" \
+	"-r --build-id" \
+	"" \
+	"" \
+	{dummy.s} \
+	{{readelf {--notes} pr28639b.rd}} \
+	"pr28639b.o" \
+    ] \
+    [list \
+	"pr28639a" \
+	"--build-id tmpdir/pr28639a.o tmpdir/pr28639b.o" \
+	"" \
+	"" \
+	{dummy.s} \
+	{{readelf {--notes} pr28639b.rd}  \
+	 {readelf {--notes} pr28639c.rd}} \
+	"pr28639a" \
+    ] \
+    [list \
+	"pr28639b" \
+	"--build-id=none tmpdir/pr28639a.o tmpdir/pr28639b.o" \
+	"" \
+	"" \
+	{dummy.s} \
+	{{readelf {--notes} pr28639d.rd}} \
+	"pr28639b" \
+    ] \
+]
diff --git a/ld/testsuite/ld-elf/pr28639a.rd b/ld/testsuite/ld-elf/pr28639a.rd
new file mode 100644
index 00000000000..e85087064d0
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr28639a.rd
@@ -0,0 +1,6 @@
+#...
+Displaying notes found in: \.note\.gnu\.build-id
+  Owner                Data size 	Description
+  GNU                  0x00000010	NT_GNU_BUILD_ID \(unique build ID bitstring\)
+    Build ID: [0-9a-f]+
+#pass
diff --git a/ld/testsuite/ld-elf/pr28639b.rd b/ld/testsuite/ld-elf/pr28639b.rd
new file mode 100644
index 00000000000..04dcb04bec2
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr28639b.rd
@@ -0,0 +1,6 @@
+#...
+Displaying notes found in: \.note\.gnu\.build-id
+  Owner                Data size 	Description
+  GNU                  0x00000014	NT_GNU_BUILD_ID \(unique build ID bitstring\)
+    Build ID: [0-9a-f]+
+#pass
diff --git a/ld/testsuite/ld-elf/pr28639c.rd b/ld/testsuite/ld-elf/pr28639c.rd
new file mode 100644
index 00000000000..64221e5fa51
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr28639c.rd
@@ -0,0 +1,10 @@
+#failif
+#...
+Displaying notes found in: \.note\.gnu\.build-id
+  Owner                Data size 	Description
+  GNU                  0x[0-9a-f]+	NT_GNU_BUILD_ID \(unique build ID bitstring\)
+    Build ID: [0-9a-f]+
+  Owner                Data size 	Description
+  GNU                  0x[0-9a-f]+	NT_GNU_BUILD_ID \(unique build ID bitstring\)
+    Build ID: [0-9a-f]+
+#...
diff --git a/ld/testsuite/ld-elf/pr28639d.rd b/ld/testsuite/ld-elf/pr28639d.rd
new file mode 100644
index 00000000000..897c8493efa
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr28639d.rd
@@ -0,0 +1,4 @@
+#failif
+#...
+Displaying notes found in: \.note\.gnu\.build-id
+#...
-- 

