From 415b1e872cb33b3354f2b7a11ec52d236cea46a1 Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Wed, 27 Jul 2022 12:33:51 +0200 Subject: [PATCH] [CMake] Enable -z defs on Solaris I wondered why I hadn't seen the link failures in D130571 on Solaris/sparcv9 and found that Solaris, unlike Linux, doesn't use `-Wl,-z,defs` when linking shared objects. The three affected shared objects indeed have undefined references to several 64-bit atomics. This patch will expose such issues in the future by defaulting to `-Wl,-z,defs` on Solaris, as recommended in `ld(1)`. Tested on `sparcv9-sun-solaris2.11` and `amd64-pc-solaris2.11`. Differential Revision: https://reviews.llvm.org/D130572 --- llvm/cmake/modules/HandleLLVMOptions.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake index 56d05f5..d83013c 100644 --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -228,7 +228,7 @@ endif() # Pass -Wl,-z,defs. This makes sure all symbols are defined. Otherwise a DSO # build might work on ELF but fail on MachO/COFF. -if(NOT (CMAKE_SYSTEM_NAME MATCHES "Darwin|FreeBSD|OpenBSD|DragonFly|AIX|SunOS|OS390" OR +if(NOT (CMAKE_SYSTEM_NAME MATCHES "Darwin|FreeBSD|OpenBSD|DragonFly|AIX|OS390" OR WIN32 OR CYGWIN) AND NOT LLVM_USE_SANITIZER) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,defs") -- 2.7.4