diff options
| author | Eric Fiselier <eric@efcs.ca> | 2016-10-07 23:07:59 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2016-10-07 23:07:59 +0000 |
| commit | e4d80542d29522b26b21621ee733df20bb908a92 (patch) | |
| tree | 21a3d0804bf1d5c572a889281c6160c3ce6b4c07 /libcxx/include | |
| parent | 37e676d85762d8541e2df16bfa14963f5c705118 (diff) | |
| download | bcm5719-llvm-e4d80542d29522b26b21621ee733df20bb908a92.tar.gz bcm5719-llvm-e4d80542d29522b26b21621ee733df20bb908a92.zip | |
Fix PR30642 - libc++ leaks always-visible symbols into programs
This was caused by r281673, specifically changing `_LIBCPP_EXTERN_TEMPLATE_TYPE_VIS`
from `__attribute__((__type_visibility__("default")))` to
`__attribute__((__visibility("default")))`.
I made that change because I thought the external instantiations needed
their members to have default visibility. However since libc++ never builds
with -fvisibility=hidden this appears not to be needed. Instead this change
caused previously hidden inline methods to become un-hidden, which is a regression.
This patch reverts the problematic change and fixes PR30642.
llvm-svn: 283620
Diffstat (limited to 'libcxx/include')
| -rw-r--r-- | libcxx/include/__config | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libcxx/include/__config b/libcxx/include/__config index 311e0607a71..14e151a4db4 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -589,7 +589,7 @@ namespace std { #ifndef _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS # if __has_attribute(__type_visibility__) -# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __attribute__ ((__visibility__("default"))) +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __attribute__ ((__type_visibility__("default"))) # else # define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS # endif |

