diff options
author | Louis Dionne <ldionne@apple.com> | 2019-08-13 15:02:53 +0000 |
---|---|---|
committer | Louis Dionne <ldionne@apple.com> | 2019-08-13 15:02:53 +0000 |
commit | 8a033a9e3fb96b9a1099325c4cd218c1c979d9d9 (patch) | |
tree | 16928742174286dedc0d67f29541fefcc7a0dbbe | |
parent | 676594305a16bb085b8dfa24a5adbb5e97be6d69 (diff) | |
download | bcm5719-llvm-8a033a9e3fb96b9a1099325c4cd218c1c979d9d9.tar.gz bcm5719-llvm-8a033a9e3fb96b9a1099325c4cd218c1c979d9d9.zip |
[libc++] Always build with -fvisibility=hidden
Summary:
This avoids symbols being accidentally exported from the dylib when they
shouldn't. The next step is to use a pragma to apply hidden visibility
to all declarations (unless otherwise specified), which will allow us
to drop the per-declaration hidden visibility attributes we currently
have.
This also has the nice side effect of making sure the dylib exports the
same symbols regardless of the optimization level.
PR38138
Reviewers: EricWF, mclow.lists
Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D62868
llvm-svn: 368703
-rw-r--r-- | libcxx/include/chrono | 1 | ||||
-rw-r--r-- | libcxx/include/filesystem | 1 | ||||
-rw-r--r-- | libcxx/src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | libcxx/src/valarray.cpp | 4 |
4 files changed, 5 insertions, 3 deletions
diff --git a/libcxx/include/chrono b/libcxx/include/chrono index f3be02b58d7..0e4cf9aef3a 100644 --- a/libcxx/include/chrono +++ b/libcxx/include/chrono @@ -2934,6 +2934,7 @@ struct _FilesystemClock { typedef chrono::duration<rep, period> 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 index 3aaa7988a87..9020a12fea1 100644 --- a/libcxx/include/filesystem +++ b/libcxx/include/filesystem @@ -2583,6 +2583,7 @@ public: 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 index 352791e8b28..11c911ac2dc 100644 --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -204,6 +204,7 @@ function(cxx_set_common_defines name) 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 @@ -355,7 +356,6 @@ if (LIBCXX_ENABLE_STATIC) 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 index 7bf0b417588..64d26583c74 100644 --- a/libcxx/src/valarray.cpp +++ b/libcxx/src/valarray.cpp @@ -12,8 +12,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD // These two symbols are part of the v1 ABI but not part of the >=v2 ABI. #if _LIBCPP_ABI_VERSION == 1 -template valarray<size_t>::valarray(size_t); -template valarray<size_t>::~valarray(); +template _LIBCPP_FUNC_VIS valarray<size_t>::valarray(size_t); +template _LIBCPP_FUNC_VIS valarray<size_t>::~valarray(); #endif template void valarray<size_t>::resize(size_t, size_t); |