PR ld/26288: Allow the use of `--just-symbols' with ET_EXEC input
authorMaciej W. Rozycki <macro@wdc.com>
Thu, 23 Jul 2020 19:11:29 +0000 (20:11 +0100)
committerMaciej W. Rozycki <macro@wdc.com>
Thu, 23 Jul 2020 19:11:29 +0000 (20:11 +0100)
commit97c79e2174fbb0dda16850fa5366592e93d31cb9
tree46d249709c800809267461e2b193934f339a8f2e
parentb5dd7120f6bcbd1fe650b8839a53b2bd423fbf60
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.
ld/ChangeLog
ld/ldelf.c
ld/testsuite/ld-misc/just-symbols-0.s [new file with mode: 0644]
ld/testsuite/ld-misc/just-symbols-1.dd [new file with mode: 0644]
ld/testsuite/ld-misc/just-symbols-1.s [new file with mode: 0644]
ld/testsuite/ld-misc/just-symbols.exp [new file with mode: 0644]
ld/testsuite/ld-misc/just-symbols.ld [new file with mode: 0644]