I'm currently working to port libc++ to Solaris. There exists a slightly bitrotten port
already, which was done on Illumos, an OpenSolaris derivative. In order not to break that
port with my work, I need to test the result on both Solaris and Illumos. While doing so,
it turned out that Illumos ld doesn't support the -z discard-sections=unused option
currently used on SunOS unconditionally.
While there exists a patch
for LLVM 9.0 in the OpenIndiana repository, it apparently hasn't been submitted
upstream and is completely wrong: it replaces -z discard-sections=unused with
-z ignore. In terms of the equivalent gld options, this means replacing --gc-sections
with --as-needed.
This patch instead tests if the linker actually supports the option before using it.
Tested on amd64-pc-solaris2.11 (all of Solaris 11.4, 11.3 and OpenIndiana 2020.04).
Ok for master?