aboutsummaryrefslogtreecommitdiff
path: root/libcxxabi
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2024-03-13 22:01:01 +0200
committerGitHub <noreply@github.com>2024-03-13 16:01:01 -0400
commit1f973efd335f34c75fcba1ccbe288fd5ece15a64 (patch)
tree477b7ad2edc8744a2067e8ae217044529f2a7e91 /libcxxabi
parent8237520eb42b37d7ed353d64a865d3ba5ac24ec6 (diff)
downloadllvm-1f973efd335f34c75fcba1ccbe288fd5ece15a64.zip
llvm-1f973efd335f34c75fcba1ccbe288fd5ece15a64.tar.gz
llvm-1f973efd335f34c75fcba1ccbe288fd5ece15a64.tar.bz2
[runtimes] Prefer -fvisibility-global-new-delete=force-hidden (#84917)
27ce26b06655cfece3d54b30e442ef93d3e78ac7 added the new option -fvisibility-global-new-delete=, where -fvisibility-global-new-delete=force-hidden is equivalent to the old option -fvisibility-global-new-delete-hidden. At the same time, the old option was deprecated. Test for and use the new option form first; if unsupported, try using the old form. This avoids warnings in the MinGW builds, if built with Clang 18 or newer.
Diffstat (limited to 'libcxxabi')
-rw-r--r--libcxxabi/src/CMakeLists.txt5
1 files changed, 4 insertions, 1 deletions
diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt
index 0af4dc1..c8cc93d 100644
--- a/libcxxabi/src/CMakeLists.txt
+++ b/libcxxabi/src/CMakeLists.txt
@@ -268,7 +268,10 @@ if(LIBCXXABI_HERMETIC_STATIC_LIBRARY)
# then its code shouldn't declare them with hidden visibility. They might
# actually be provided by a shared library at link time.
if (LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS)
- target_add_compile_flags_if_supported(cxxabi_static_objects PRIVATE -fvisibility-global-new-delete-hidden)
+ target_add_compile_flags_if_supported(cxxabi_static_objects PRIVATE -fvisibility-global-new-delete=force-hidden)
+ if (NOT CXX_SUPPORTS_FVISIBILITY_GLOBAL_NEW_DELETE_EQ_FORCE_HIDDEN_FLAG)
+ target_add_compile_flags_if_supported(cxxabi_static_objects PRIVATE -fvisibility-global-new-delete-hidden)
+ endif()
endif()
# _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS can be defined in libcxx's
# __config_site too. Define it in the same way here, to avoid redefinition