[testsuite] note pitfall in how outputs.exp sets gld
commita6065b9cbcde458dd944392ea259e5e1114d2b16
authorAlexandre Oliva <oliva@adacore.com>
Wed, 28 Jun 2023 04:25:55 +0000 (28 01:25 -0300)
committerAlexandre Oliva <oliva@gnu.org>
Wed, 28 Jun 2023 04:25:55 +0000 (28 01:25 -0300)
tree7bb7f1cc8155e04753fe1e2d4fbebc4fe95a5db0
parenta1c6e9631ca33990a2b7411060ca4d18db081a7d
[testsuite] note pitfall in how outputs.exp sets gld

This patch documents a glitch in gcc.misc-tests/outputs.exp: it checks
whether the linker is GNU ld, and uses that to decide whether to
expect collect2 to create .ld1_args files under -save-temps, but
collect2 bases that decision on whether HAVE_GNU_LD is set, which may
be false zero if the linker in use is GNU ld.  Configuring
--with-gnu-ld fixes this misalignment.  Without that, atsave tests are
likely to fail, because without HAVE_GNU_LD, collect2 won't use @file
syntax to run the linker (so it won't create .ld1_args files).

Long version: HAVE_GNU_LD is set when (i) DEFAULT_LINKER is set during
configure, pointing at GNU ld; (ii) --with-gnu-ld is passed to
configure; or (iii) config.gcc sets gnu_ld=yes.  If a port doesn't set
gnu_ld, and the toolchain isn't configured so as to assume GNU ld,
configure and thus collect2 conservatively assume the linker doesn't
support @file arguments.

But outputs.exp can't see how configure set HAVE_GNU_LD (it may be
used to test an installed compiler), and upon finding that the linker
used by the compiler is GNU ld, it will expect collect2 to use @file
arguments when running the linker.  If that assumption doesn't hold,
atsave tests will fail.

for  gcc/testsuite/ChangeLog

* gcc.misc-tests/outputs.exp (gld): Note a known mismatch and
record a workaround.
gcc/testsuite/gcc.misc-tests/outputs.exp