HomePhabricator

[cmake] Don't pass -z discard-unused to Illumos ld

Authored by ro on Jun 12 2020, 12:56 AM.

Description

[cmake] Don't pass -z discard-unused to Illumos ld

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
https://github.com/OpenIndiana/oi-userland/blob/oi/hipster/components/developer/clang-90/patches/02-cmake_modules_AddLLVM.cmake.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).

Differential Revision: https://reviews.llvm.org/D81545

Details

Committed
roJun 12 2020, 12:56 AM
Differential Revision
D81545: [cmake] Don't pass -z discard-unused to Illumos ld
Parents
rG2e92b397ae4b: [clang] Rename Decl::isHidden() to isUnconditionallyVisible().
Branches
Unknown
Tags
Unknown