[PATCH v1 3/5] ld: fix segfault on discarded input sections not fitting in memory regions
Jan Beulich
jbeulich@suse.com
Fri Sep 26 13:18:06 GMT 2025
On 18.09.2025 17:06, Matthieu Longo wrote:
> In the case of non-contiguous memory regions, if an input section did not
> fit in any of the designated memory regions, the linker marked it as
> discarded, and warn_non_contiguous_discards() would only issue warning on
> it, relying on later unresolved symbol errors to terminate the process
> before a crash occur. This approach was insufficient, and crashes did occur
> on AArch64.
>
> This patch renames warn_non_contiguous_discards () to a name that does not
> contain "discard" as it created some confusion with the /DISCARD/ output
> section. It also promotes the warnings to errors, and ensures that the
> link process terminates cleanly if any input section is not allocated to
> an output section.
> It also updates an AArch32 test expectations to match the corrected
> behavior. Tests for the crash cases are added in a subsequent patch.
Looks okay to me, just one style nit:
> @@ -8242,10 +8247,15 @@ warn_non_contiguous_discards (void)
>
> for (asection *s = file->the_bfd->sections; s != NULL; s = s->next)
> if (s->output_section == NULL && !s->veneer)
> - einfo (_("%P: warning: --enable-non-contiguous-regions "
> - "discards section `%pA' from `%pB'\n"),
> - s, file->the_bfd);
> + {
> + einfo (_("%P: error: --enable-non-contiguous-regions was not able "
> + "to allocate the input section `%pA' (%pB) to an output "
> + "section\n"), s, file->the_bfd);
Please retain original line splitting (no new arguments on the same line as
an already split argument).
Jan
More information about the Binutils
mailing list