public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/
Date: Tue, 19 Aug 2025 03:48:09 +0000 (UTC)	[thread overview]
Message-ID: <1755575273.f96ad7995e3833535278b5edcc9cbfa636eca2ac.sam@gentoo> (raw)

commit:     f96ad7995e3833535278b5edcc9cbfa636eca2ac
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 19 03:47:53 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Aug 19 03:47:53 2025 +0000
URL:        https://gitweb.gentoo.org/proj/toolchain/binutils-patches.git/commit/?id=f96ad799

9999: add fix for property pruning

Signed-off-by: Sam James <sam <AT> gentoo.org>

 9999/0010-elf-Prune-empty-generic-properties.patch | 204 +++++++++++++++++++++
 1 file changed, 204 insertions(+)

diff --git a/9999/0010-elf-Prune-empty-generic-properties.patch b/9999/0010-elf-Prune-empty-generic-properties.patch
new file mode 100644
index 0000000..598781d
--- /dev/null
+++ b/9999/0010-elf-Prune-empty-generic-properties.patch
@@ -0,0 +1,204 @@
+From 5179e6a3d41c8e5df76065f24f5eec32e93b4584 Mon Sep 17 00:00:00 2001
+Message-ID: <5179e6a3d41c8e5df76065f24f5eec32e93b4584.1755575227.git.sam@gentoo.org>
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Mon, 18 Aug 2025 18:37:00 -0700
+Subject: [PATCH] elf: Prune empty generic properties
+
+Prune empty generic properties before discarding empty property note
+section and leave processor specific properties to the backend.
+
+bfd/
+
+	PR ld/33292
+	* elf-properties.c (elf_prune_empty_properties): New function.
+	(_bfd_elf_link_setup_gnu_properties): Call
+	elf_prune_empty_properties before discarding empty property note
+	section.  Move indirect_extern_access processing before
+	elf_prune_empty_properties call.
+
+ld/
+
+	PR ld/33292
+	* testsuite/ld-x86-64/pr33292-x32.d: New file.
+	* testsuite/ld-x86-64/pr33292.d: Likewise.
+	* testsuite/ld-x86-64/pr33292.s: Likewise.
+	* testsuite/ld-x86-64/x86-64.exp: Run PR ld/33292 tests.
+
+Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+---
+ bfd/elf-properties.c                 | 51 +++++++++++++++++++---------
+ ld/testsuite/ld-x86-64/pr33292-x32.d | 10 ++++++
+ ld/testsuite/ld-x86-64/pr33292.d     |  9 +++++
+ ld/testsuite/ld-x86-64/pr33292.s     | 34 +++++++++++++++++++
+ ld/testsuite/ld-x86-64/x86-64.exp    |  2 ++
+ 5 files changed, 90 insertions(+), 16 deletions(-)
+ create mode 100644 ld/testsuite/ld-x86-64/pr33292-x32.d
+ create mode 100644 ld/testsuite/ld-x86-64/pr33292.d
+ create mode 100644 ld/testsuite/ld-x86-64/pr33292.s
+
+diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c
+index 07ab38098e6..73eb231d861 100644
+--- a/bfd/elf-properties.c
++++ b/bfd/elf-properties.c
+@@ -697,6 +697,23 @@ _bfd_elf_link_create_gnu_property_sec (struct bfd_link_info *info, bfd *elf_bfd,
+   return sec;
+ }
+ 
++/* Prune empty generic properties.  */
++
++static void
++elf_prune_empty_properties (elf_property_list **pp)
++{
++  elf_property_list *p;
++
++  while ((p = *pp) != NULL)
++    if ((p->property.pr_type < GNU_PROPERTY_LOPROC
++	 || p->property.pr_type >= GNU_PROPERTY_LOUSER)
++	&& p->property.pr_datasz != 0
++	&& p->property.pr_kind == property_number
++	&& p->property.u.number == 0)
++      *pp = p->next;
++    else
++      pp = &p->next;
++}
+ 
+ /* Set up GNU properties.  Return the first relocatable ELF input with
+    GNU properties if found.  Otherwise, return NULL.  */
+@@ -878,22 +895,6 @@ _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info)
+       if (bed->fixup_gnu_properties)
+ 	bed->fixup_gnu_properties (info, &elf_properties (first_pbfd));
+ 
+-      if (elf_properties (first_pbfd) == NULL)
+-	{
+-	  /* Discard .note.gnu.property section if all properties have
+-	     been removed.  */
+-	  sec->output_section = bfd_abs_section_ptr;
+-	  return NULL;
+-	}
+-
+-      /* Compute the section size.  */
+-      list = elf_properties (first_pbfd);
+-      size = elf_get_gnu_property_section_size (list, align_size);
+-
+-      /* Update .note.gnu.property section now.  */
+-      sec->size = size;
+-      contents = (bfd_byte *) bfd_zalloc (first_pbfd, size);
+-
+       if (info->indirect_extern_access <= 0)
+ 	{
+ 	  /* Get GNU_PROPERTY_1_NEEDED properties.  */
+@@ -917,6 +918,24 @@ _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info)
+ 	    }
+ 	}
+ 
++      elf_prune_empty_properties (&elf_properties (first_pbfd));
++
++      if (elf_properties (first_pbfd) == NULL)
++	{
++	  /* Discard .note.gnu.property section if all properties have
++	     been removed.  */
++	  sec->output_section = bfd_abs_section_ptr;
++	  return NULL;
++	}
++
++      /* Compute the section size.  */
++      list = elf_properties (first_pbfd);
++      size = elf_get_gnu_property_section_size (list, align_size);
++
++      /* Update .note.gnu.property section now.  */
++      sec->size = size;
++      contents = (bfd_byte *) bfd_zalloc (first_pbfd, size);
++
+       elf_write_gnu_properties (info, first_pbfd, contents, list, size,
+ 				align_size);
+ 
+diff --git a/ld/testsuite/ld-x86-64/pr33292-x32.d b/ld/testsuite/ld-x86-64/pr33292-x32.d
+new file mode 100644
+index 00000000000..0d6cf8115cd
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr33292-x32.d
+@@ -0,0 +1,10 @@
++#source: pr33292.s
++#as: --x32 -mx86-used-note=yes
++#ld: -shared -m elf32_x86_64 -z noindirect-extern-access
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[ 	]+Owner[ 	]+Data size[ 	]+Description
++  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature used: x86
++	x86 ISA used: x86-64-baseline
+diff --git a/ld/testsuite/ld-x86-64/pr33292.d b/ld/testsuite/ld-x86-64/pr33292.d
+new file mode 100644
+index 00000000000..456b8499b57
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr33292.d
+@@ -0,0 +1,9 @@
++#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
++#ld: -shared -m elf_x86_64 -z noindirect-extern-access
++#readelf: -n
++
++Displaying notes found in: .note.gnu.property
++[ 	]+Owner[ 	]+Data size[ 	]+Description
++  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
++      Properties: x86 feature used: x86
++	x86 ISA used: x86-64-baseline
+diff --git a/ld/testsuite/ld-x86-64/pr33292.s b/ld/testsuite/ld-x86-64/pr33292.s
+new file mode 100644
+index 00000000000..8d14e880712
+--- /dev/null
++++ b/ld/testsuite/ld-x86-64/pr33292.s
+@@ -0,0 +1,34 @@
++	.section ".note.gnu.property", "a"
++.ifdef __64_bit__
++	.p2align 3
++.else
++	.p2align 2
++.endif
++	.long 1f - 0f		/* name length */
++	.long 5f - 2f		/* data length */
++	.long 5			/* note type */
++0:	.asciz "GNU"		/* vendor name */
++1:
++.ifdef __64_bit__
++	.p2align 3
++.else
++	.p2align 2
++.endif
++2:	.long 0xb0008000	/* pr_type.  */
++	.long 4f - 3f		/* pr_datasz.  */
++3:
++	.long 0x1
++4:
++.ifdef __64_bit__
++	.p2align 3
++.else
++	.p2align 2
++.endif
++5:
++
++	.text
++	.globl	foo
++	.type	foo, @function
++foo:
++	ret
++	.section	.note.GNU-stack
+diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
+index 0c66d1b26f7..9d975319cf5 100644
+--- a/ld/testsuite/ld-x86-64/x86-64.exp
++++ b/ld/testsuite/ld-x86-64/x86-64.exp
+@@ -568,6 +568,8 @@ run_dump_test "pr33260"
+ run_dump_test "pr33260-x32"
+ run_dump_test "pr33260-2"
+ run_dump_test "pr33260-2-x32"
++run_dump_test "pr33292"
++run_dump_test "pr33292-x32"
+ 
+ if { ![skip_sframe_tests] } {
+     run_dump_test "sframe-simple-1"
+
+base-commit: 7e432e93f8aaa14368476cf5eae9d55c18a266fb
+prerequisite-patch-id: f9e52c2b633aadd966330c2c4529c890981bac7e
+-- 
+2.51.0
+


             reply	other threads:[~2025-08-19  3:48 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-19  3:48 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-10-11  6:40 [gentoo-commits] proj/toolchain/binutils-patches:master commit in: 9999/ Sam James
2025-10-11  0:46 Sam James
2025-10-11  0:46 Sam James
2025-10-10  5:41 Sam James
2025-10-10  5:28 Sam James
2025-10-10  5:28 Sam James
2025-10-10  5:25 Sam James
2025-10-10  4:57 Sam James
2025-08-29 13:40 Sam James
2025-08-28 20:21 Sam James
2025-08-28 13:51 Sam James
2025-08-28  5:32 Sam James
2025-08-27 16:26 Sam James
2025-08-27  4:05 Sam James
2025-08-27  2:49 Sam James
2025-08-25  2:49 Sam James
2025-08-20 23:30 Sam James
2025-08-20 22:17 Sam James
2025-08-20 22:17 Sam James
2025-08-20 20:44 Sam James
2025-08-20  4:39 Sam James
2025-08-19 20:54 Sam James
2025-08-19 17:11 Sam James
2025-08-19 16:28 Sam James
2025-08-19 10:51 Sam James
2025-08-18 20:21 Sam James
2025-08-18 20:21 Sam James
2025-08-18 20:19 Sam James
2025-08-18 15:39 Sam James
2025-08-17 20:58 Sam James
2025-08-17 19:45 Sam James
2025-08-06 13:19 Sam James
2025-08-06  4:07 Sam James
2025-08-06  1:08 Sam James
2025-08-05 20:21 Sam James
2025-08-04 21:43 Sam James
2025-08-04 21:05 Sam James
2025-08-04 15:32 Sam James
2025-08-04 11:06 Sam James
2025-08-03 23:43 Sam James
2025-08-01 11:28 Sam James
2025-08-01  8:17 Sam James
2025-07-31 11:39 Sam James
2025-07-28 12:24 Andreas K. Hüttel
2025-07-24 17:25 Sam James
2025-07-24  4:03 Sam James
2025-07-24  3:46 Sam James
2025-07-23 22:37 Sam James
2025-06-14 21:52 Sam James
2025-06-13  8:00 Sam James
2025-05-14  7:14 Sam James
2025-05-14  3:59 Sam James
2025-05-05  9:46 Sam James
2025-05-05  3:06 Sam James
2025-05-04 10:15 Sam James
2025-04-10 17:35 Sam James
2025-04-09  2:24 Sam James
2025-04-08  0:36 Sam James
2025-03-29 14:18 Sam James
2025-03-12 20:21 Sam James
2025-03-06 12:54 Sam James
2025-03-06  4:54 Sam James
2025-02-03 18:02 Andreas K. Hüttel
2025-01-14  2:09 Sam James
2025-01-13  6:11 Sam James
2025-01-02 13:48 Sam James
2025-01-01 14:05 Sam James
2024-12-26  1:21 Sam James
2024-12-24  6:27 Sam James
2024-12-21  0:09 Sam James
2024-08-03 22:43 Andreas K. Hüttel
2024-06-29 17:05 Andreas K. Hüttel
2024-06-29 16:32 Andreas K. Hüttel
2024-06-29 16:32 Andreas K. Hüttel
2024-06-28 21:48 Andreas K. Hüttel
2023-10-27  0:44 Sam James
2023-10-27  0:44 Sam James
2023-07-30 14:49 Andreas K. Hüttel
2023-07-28 16:23 Andreas K. Hüttel
2023-06-30  9:21 WANG Xuerui
2023-04-02 11:44 Andreas K. Hüttel
2023-01-05 16:22 Andreas K. Hüttel
2023-01-05 16:21 Andreas K. Hüttel
2023-01-03 23:03 Andreas K. Hüttel
2023-01-02 23:50 Andreas K. Hüttel
2022-10-08 12:15 WANG Xuerui
2022-07-29  7:55 WANG Xuerui
2022-01-15 22:27 Andreas K. Hüttel
2021-08-17 20:07 Andreas K. Hüttel
2021-07-30 23:25 Andreas K. Hüttel
2021-07-24 20:57 Andreas K. Hüttel
2021-07-20 19:53 Andreas K. Hüttel
2021-07-20 19:50 Andreas K. Hüttel
2021-07-06  7:04 Sergei Trofimovich
2021-07-06  7:04 Sergei Trofimovich
2021-07-06  7:04 Sergei Trofimovich
2020-07-25 17:27 Andreas K. Hüttel
2020-07-25 12:26 Andreas K. Hüttel
2020-07-25 12:23 Andreas K. Hüttel
2020-07-25 12:20 Andreas K. Hüttel
2020-05-19 21:12 Andreas K. Hüttel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1755575273.f96ad7995e3833535278b5edcc9cbfa636eca2ac.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox