The PR ld/26047 fix has regressed RISC-V/Linux kernel builds, causing a link failure, by disallowing the use of ET_EXEC files as `--just-symbols' input, which is legitimate and indeed often the most useful.
I'm testing a fix along with a couple of test cases targetting 2.35.
Allowing ET_EXEC with --just-symbols seems fine. Gold explicitly allows this combination.
The master branch has been updated by Maciej W. Rozycki <macro@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b5dd7120f6bcbd1fe650b8839a53b2bd423fbf60 commit b5dd7120f6bcbd1fe650b8839a53b2bd423fbf60 Author: Maciej W. Rozycki <macro@wdc.com> Date: Thu Jul 23 20:11:29 2020 +0100 PR ld/26288: Revert obsolete part of PR ld/26047 fix Revert commit a3fc941881e4 ("Stop the linker from accepting executable ELF files as inputs to other links."), which has been made obsolete by commit a87e1817a435 ("Have the linker fail if any attempt to link in an executable is made."). An earlier check triggers added with the latter commit making the piece of code removed dead. ld/ PR ld/26288 Revert: PR 26047 * ldelf.c (ldelf_after_open): Fail if attempting to link one executable into another.
The master branch has been updated by Maciej W. Rozycki <macro@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=97c79e2174fbb0dda16850fa5366592e93d31cb9 commit 97c79e2174fbb0dda16850fa5366592e93d31cb9 Author: Maciej W. Rozycki <macro@wdc.com> Date: Thu Jul 23 20:11:29 2020 +0100 PR ld/26288: Allow the use of `--just-symbols' with ET_EXEC input Fix a regression from commit a87e1817a435 ("Have the linker fail if any attempt to link in an executable is made.") and do not reject ET_EXEC input supplied with the `--just-symbols' option. Such use is legitimate as the file requested is not actually linked and only the symbols are extracted. Furthermore it is often the most useful application, as already observed in our documentation for the option, where it allows "to refer symbolically to absolute locations of memory defined in other programs." Provide a set of tests for the use of ET_EXEC with `--just-symbols'. These are excluded however for SH/PE targets because they complain if a section's VMA is 0: ld: zero vma section reloc detected: `.text' #0 f=32795 ld: zero vma section reloc detected: `.data' #1 f=291 and for x86_64/PE targets because they seem to hardwire the VMA: 100000000 12000000 01000000 00000000 00000000 ................ ld/ PR ld/26288 * ldelf.c (ldelf_after_open): Do not reject ET_EXEC input supplied with `--just-symbols'. * testsuite/ld-misc/just-symbols.exp: New test script. * testsuite/ld-misc/just-symbols-1.dd: New test dump. * testsuite/ld-misc/just-symbols.ld: New test linker script. * testsuite/ld-misc/just-symbols-0.s: New test source. * testsuite/ld-misc/just-symbols-1.s: New test source.
The binutils-2_35-branch branch has been updated by Maciej W. Rozycki <macro@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=9b6165529df6a759d65fc786a44eb28e226b81ad commit 9b6165529df6a759d65fc786a44eb28e226b81ad Author: Maciej W. Rozycki <macro@wdc.com> Date: Thu Jul 23 20:24:58 2020 +0100 PR ld/26288: Revert obsolete part of PR ld/26047 fix Revert commit a3fc941881e4 ("Stop the linker from accepting executable ELF files as inputs to other links."), which has been made obsolete by commit a87e1817a435 ("Have the linker fail if any attempt to link in an executable is made."). An earlier check triggers added with the latter commit making the piece of code removed dead. ld/ PR ld/26288 Revert: PR 26047 * ldelf.c (ldelf_after_open): Fail if attempting to link one executable into another. (cherry picked from commit b5dd7120f6bcbd1fe650b8839a53b2bd423fbf60)
The binutils-2_35-branch branch has been updated by Maciej W. Rozycki <macro@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fa3b131151d42e1284a447add8c0535ac92ec6e1 commit fa3b131151d42e1284a447add8c0535ac92ec6e1 Author: Maciej W. Rozycki <macro@wdc.com> Date: Thu Jul 23 20:24:58 2020 +0100 PR ld/26288: Allow the use of `--just-symbols' with ET_EXEC input Fix a regression from commit a87e1817a435 ("Have the linker fail if any attempt to link in an executable is made.") and do not reject ET_EXEC input supplied with the `--just-symbols' option. Such use is legitimate as the file requested is not actually linked and only the symbols are extracted. Furthermore it is often the most useful application, as already observed in our documentation for the option, where it allows "to refer symbolically to absolute locations of memory defined in other programs." Provide a set of tests for the use of ET_EXEC with `--just-symbols'. These are excluded however for SH/PE targets because they complain if a section's VMA is 0: ld: zero vma section reloc detected: `.text' #0 f=32795 ld: zero vma section reloc detected: `.data' #1 f=291 and for x86_64/PE targets because they seem to hardwire the VMA: 100000000 12000000 01000000 00000000 00000000 ................ ld/ PR ld/26288 * ldelf.c (ldelf_after_open): Do not reject ET_EXEC input supplied with `--just-symbols'. * testsuite/ld-misc/just-symbols.exp: New test script. * testsuite/ld-misc/just-symbols-1.dd: New test dump. * testsuite/ld-misc/just-symbols.ld: New test linker script. * testsuite/ld-misc/just-symbols-0.s: New test source. * testsuite/ld-misc/just-symbols-1.s: New test source. (cherry picked from commit 97c79e2174fbb0dda16850fa5366592e93d31cb9)
Fixed on master and binutils-2_35-branch.