From: Matthieu Longo Date: Thu, 4 Sep 2025 14:25:21 +0000 (+0100) Subject: ld: fix segfault when linker script is not found X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f04c774b7d49912cc9dcb0cd613e819edb21c3a2;p=thirdparty%2Fbinutils-gdb.git ld: fix segfault when linker script is not found ld previously crashed with a segmentation fault if the specified linker script could not be found. The issue seems to have been introduced recently by d048eee2910 [1]. This patch adds a check to ensure that a filename was found after searching the possible prefixes. If no filename was found, the function returns NULL, and ldfile_open_command_file_1() emits a proper fatal error message. This change prevents the crash and provides a clear diagnostic. A new generic test was also added to cover this error case. [1]: https://inbox.sourceware.org/binutils/20250812143757.3565482-1-hjl .tools@gmail.com/ --- diff --git a/ld/ldfile.c b/ld/ldfile.c index bed04fbf9eb..83591fe21db 100644 --- a/ld/ldfile.c +++ b/ld/ldfile.c @@ -877,6 +877,9 @@ ldfile_find_command_file (const char *name, /* Restore the original path list. */ *search_tail_ptr = NULL; + if (!filename) + return NULL; + success: /* PR 24576: Catch the case where the user has accidentally included the same linker script twice. */ diff --git a/ld/testsuite/ld-scripts/linker-script-not-found.d b/ld/testsuite/ld-scripts/linker-script-not-found.d new file mode 100644 index 00000000000..61d4d8aa57d --- /dev/null +++ b/ld/testsuite/ld-scripts/linker-script-not-found.d @@ -0,0 +1,3 @@ +#source: default-script.s +#ld: -T misspelled.ld +#error: cannot open linker script file misspelled\.ld: .*\Z diff --git a/ld/testsuite/ld-scripts/script.exp b/ld/testsuite/ld-scripts/script.exp index 40bfe1a56e5..7a23f435121 100644 --- a/ld/testsuite/ld-scripts/script.exp +++ b/ld/testsuite/ld-scripts/script.exp @@ -235,6 +235,7 @@ run_dump_test "ld-version" run_dump_test "ld-version-2" run_dump_test "pr24576-1" run_dump_test "pr24576-2" +run_dump_test "linker-script-not-found" run_dump_test "segment-start" {{name (default)}} run_dump_test "segment-start" {{name (overridden)} \