Skip to content

Commit 1f973ef

Browse files
authored
[runtimes] Prefer -fvisibility-global-new-delete=force-hidden (#84917)
27ce26b 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.
1 parent 8237520 commit 1f973ef

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

libcxx/src/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,10 @@ if (LIBCXX_ENABLE_STATIC)
301301
# then its code shouldn't declare them with hidden visibility. They might
302302
# actually be provided by a shared library at link time.
303303
if (LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS)
304-
append_flags_if_supported(CXX_STATIC_LIBRARY_FLAGS -fvisibility-global-new-delete-hidden)
304+
append_flags_if_supported(CXX_STATIC_LIBRARY_FLAGS -fvisibility-global-new-delete=force-hidden)
305+
if (NOT CXX_SUPPORTS_FVISIBILITY_GLOBAL_NEW_DELETE_EQ_FORCE_HIDDEN_FLAG)
306+
append_flags_if_supported(CXX_STATIC_LIBRARY_FLAGS -fvisibility-global-new-delete-hidden)
307+
endif()
305308
endif()
306309
target_compile_options(cxx_static PRIVATE ${CXX_STATIC_LIBRARY_FLAGS})
307310
# _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS can be defined in __config_site

libcxxabi/src/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,10 @@ if(LIBCXXABI_HERMETIC_STATIC_LIBRARY)
268268
# then its code shouldn't declare them with hidden visibility. They might
269269
# actually be provided by a shared library at link time.
270270
if (LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS)
271-
target_add_compile_flags_if_supported(cxxabi_static_objects PRIVATE -fvisibility-global-new-delete-hidden)
271+
target_add_compile_flags_if_supported(cxxabi_static_objects PRIVATE -fvisibility-global-new-delete=force-hidden)
272+
if (NOT CXX_SUPPORTS_FVISIBILITY_GLOBAL_NEW_DELETE_EQ_FORCE_HIDDEN_FLAG)
273+
target_add_compile_flags_if_supported(cxxabi_static_objects PRIVATE -fvisibility-global-new-delete-hidden)
274+
endif()
272275
endif()
273276
# _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS can be defined in libcxx's
274277
# __config_site too. Define it in the same way here, to avoid redefinition

libunwind/src/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,10 @@ set_target_properties(unwind_static_objects
201201

202202
if(LIBUNWIND_HIDE_SYMBOLS)
203203
target_add_compile_flags_if_supported(unwind_static_objects PRIVATE -fvisibility=hidden)
204-
target_add_compile_flags_if_supported(unwind_static_objects PRIVATE -fvisibility-global-new-delete-hidden)
204+
target_add_compile_flags_if_supported(unwind_static_objects PRIVATE -fvisibility-global-new-delete=force-hidden)
205+
if (NOT CXX_SUPPORTS_FVISIBILITY_GLOBAL_NEW_DELETE_EQ_FORCE_HIDDEN_FLAG)
206+
target_add_compile_flags_if_supported(unwind_static_objects PRIVATE -fvisibility-global-new-delete-hidden)
207+
endif()
205208
target_compile_definitions(unwind_static_objects PRIVATE _LIBUNWIND_HIDE_SYMBOLS)
206209
endif()
207210

0 commit comments

Comments
 (0)