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
+
next 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