diff --git a/libcxx/include/chrono b/libcxx/include/chrono --- a/libcxx/include/chrono +++ b/libcxx/include/chrono @@ -2825,6 +2825,7 @@ typedef chrono::duration duration; typedef chrono::time_point<_FilesystemClock> time_point; + _LIBCPP_EXPORTED_FROM_ABI static _LIBCPP_CONSTEXPR_AFTER_CXX11 const bool is_steady = false; _LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_FUNC_VIS static time_point now() noexcept; diff --git a/libcxx/include/filesystem b/libcxx/include/filesystem --- a/libcxx/include/filesystem +++ b/libcxx/include/filesystem @@ -2583,6 +2583,7 @@ void disable_recursion_pending() { __rec_ = false; } private: + _LIBCPP_FUNC_VIS recursive_directory_iterator(const path& __p, directory_options __opt, error_code* __ec); diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -198,6 +198,7 @@ if(LIBCXX_CXX_ABI_HEADER_TARGET) add_dependencies(${name} ${LIBCXX_CXX_ABI_HEADER_TARGET}) endif() + target_compile_options(${name} PRIVATE -fvisibility=hidden) if(WIN32 AND NOT MINGW) target_compile_definitions(${name} PRIVATE @@ -348,7 +349,6 @@ cxx_set_common_defines(cxx_static) if (LIBCXX_HERMETIC_STATIC_LIBRARY) - append_flags_if_supported(CXX_STATIC_LIBRARY_FLAGS -fvisibility=hidden) # If the hermetic library doesn't define the operator new/delete functions # then its code shouldn't declare them with hidden visibility. They might # actually be provided by a shared library at link time. diff --git a/libcxx/src/valarray.cpp b/libcxx/src/valarray.cpp --- a/libcxx/src/valarray.cpp +++ b/libcxx/src/valarray.cpp @@ -12,8 +12,8 @@ // These two symbols are part of the v1 ABI but not part of the >=v2 ABI. #if _LIBCPP_ABI_VERSION == 1 -template valarray::valarray(size_t); -template valarray::~valarray(); +template _LIBCPP_FUNC_VIS valarray::valarray(size_t); +template _LIBCPP_FUNC_VIS valarray::~valarray(); #endif template void valarray::resize(size_t, size_t);