[PATCH v2] ld: Check input section garbage collection error

H.J. Lu hjl.tools@gmail.com
Thu Aug 6 01:33:59 GMT 2026


On Thu, Aug 6, 2026 at 9:06 AM Alan Modra <amodra@gmail.com> wrote:
>
> On Thu, Aug 06, 2026 at 07:34:43AM +0800, H.J. Lu wrote:
> > diff --git a/bfd/elflink.c b/bfd/elflink.c
> > index 31c652b17c9..343fc880cda 100644
> > --- a/bfd/elflink.c
> > +++ b/bfd/elflink.c
> > @@ -14776,7 +14776,8 @@ bfd_elf_gc_sections (bfd *obfd, struct bfd_link_info *info)
> >      }
> >
> >    /* Allow the backend to mark additional target specific sections.  */
> > -  obed->gc_mark_extra_sections (info, gc_mark_hook);
> > +  if (!obed->gc_mark_extra_sections (info, gc_mark_hook))
> > +    return false;
> >
> >    /* ... and mark SEC_EXCLUDE for those that go.  */
> >    return elf_gc_sweep (obfd, info);
> > 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)
>
> OK without the bfd_get_error test.  If there is some condition under
> which bfd_gc_sections returns false where we'd like the linker to
> continue, then we'll fix bfd_gc_sections to return true.  As far as I
> can see with a quick scan over the code, bfd_elf_gc_sections returns
> false only on an error reading relocs, and I think all of the possible
> false returns from elf_link_read_relocs_from_section ought to cause a
> fatal error.

Fixed.   This is the patch I am checking in.

> > +    fatal (_("%P: --gc-sections failed: %E\n"));
> >  }
> >
> >  /* Worker for lang_find_relro_sections_1.  */
> > --
> > 2.55.0
> >
>
>
> --
> Alan Modra



-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ld-Check-input-section-garbage-collection-error.patch
Type: text/x-patch
Size: 1973 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20260806/42576f74/attachment.bin>


More information about the Binutils mailing list