[PATCH] ld: Check bfd_gc_sections return
"H.J. Lu" <[email protected]>
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <CAMe9rOo4GC_Lkw6PYA78CnR5gWsy6T1nYGW+hvdq9DXMeA2YLg@mail.gmail.com> |
bfd_gc_sections may return false on invalid input: ld: pr34448-bug_18.o: bad reloc symbol index (0xf2000005 >= 0x13) for offset 0x4 in section `.text.get_tls[get_tls]' and set the BFD error to bfd_error_bad_value. Check bfd_gc_sections return and report the fatal error if the BFD error is bfd_error_bad_value. PR ld/34448 * ldlang.c (lang_gc_sections): Check bfd_gc_sections return and report the fatal error if the BFD error is bfd_error_bad_value. -- H.J.
0001-ld-Check-bfd_gc_sections-return.patch
(text/x-patch, 1.3 KB)
From 02ba2ff2dd6c58cb657cdbab4c33339b40ce1689 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" <[email protected]> Date: Wed, 5 Aug 2026 16:43:05 +0800 Subject: [PATCH] ld: Check bfd_gc_sections return bfd_gc_sections may return false on invalid input: ld: pr34448-bug_18.o: bad reloc symbol index (0xf2000005 >= 0x13) for offset 0x4 in section `.text.get_tls[get_tls]' and set the BFD error to bfd_error_bad_value. Check bfd_gc_sections return and report the fatal error if the BFD error is bfd_error_bad_value. PR ld/34448 * ldlang.c (lang_gc_sections): Check bfd_gc_sections return and report the fatal error if the BFD error is bfd_error_bad_value. Signed-off-by: H.J. Lu <[email protected]> --- ld/ldlang.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ld/ldlang.c b/ld/ldlang.c index 886c49a1861..f8e9d2496a4 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -8165,8 +8165,10 @@ lang_gc_sections (void) } } - if (link_info.gc_sections) - bfd_gc_sections (link_info.output_bfd, &link_info); + if (link_info.gc_sections + && !bfd_gc_sections (link_info.output_bfd, &link_info) + && bfd_get_error () == bfd_error_bad_value) + fatal (_("%P: --gc-sections failed: %E\n")); } /* Worker for lang_find_relro_sections_1. */ -- 2.55.0