summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorLouis Dionne <ldionne@apple.com>2018-10-25 12:13:43 +0000
committerLouis Dionne <ldionne@apple.com>2018-10-25 12:13:43 +0000
commit07f95bd10d709b6f287b218aae912dfed1b3ff0c (patch)
treede76c756a27c461fdc01ce1bc7821ff763f0c88a /docs
parent92d87364ff5c119a16e3a3da0bb5ee619be72825 (diff)
downloadlibcxx-07f95bd10d709b6f287b218aae912dfed1b3ff0c.tar.gz
[libc++] Make sure we can build libc++ with -fvisibility=hidden
Summary: When building with -fvisibility=hidden, some symbols do not get exported from libc++.dylib. This means that some entities are not explicitly given default visibility in the source code, and that we rely on the fact -fvisibility=default is the default. This commit explicitly gives default visibility to those symbols to avoid being dependent on the command line flags used. The commit also remove symbols from the dylib -- those symbols do not actually need to be exported from the dylib and this should not be an ABI break. Finally, in the future, we may want to mark the whole std:: namespace as having hidden visibility (to switch from opt-out to opt-in), in which case the changes done in this commit will be required. Reviewers: EricWF Subscribers: mgorny, christof, dexonsmith, libcxx-commits Differential Revision: https://reviews.llvm.org/D52662 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@345260 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r--docs/DesignDocs/VisibilityMacros.rst8
1 files changed, 4 insertions, 4 deletions
diff --git a/docs/DesignDocs/VisibilityMacros.rst b/docs/DesignDocs/VisibilityMacros.rst
index 08debbcdd..d0d4f0adb 100644
--- a/docs/DesignDocs/VisibilityMacros.rst
+++ b/docs/DesignDocs/VisibilityMacros.rst
@@ -22,11 +22,11 @@ Visibility Macros
Mark a symbol as being exported by the libc++ library. This attribute must
be applied to the declaration of all functions exported by the libc++ dylib.
-**_LIBCPP_EXTERN_VIS**
+**_LIBCPP_EXPORTED_FROM_ABI**
Mark a symbol as being exported by the libc++ library. This attribute may
- only be applied to objects defined in the libc++ library. On Windows this
- macro applies `dllimport`/`dllexport` to the symbol. On all other platforms
- this macro has no effect.
+ only be applied to objects defined in the libc++ runtime library. On Windows,
+ this macro applies `dllimport`/`dllexport` to the symbol, and on other
+ platforms it gives the symbol default visibility.
**_LIBCPP_OVERRIDABLE_FUNC_VIS**
Mark a symbol as being exported by the libc++ library, but allow it to be