aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2018-07-20 11:24:55 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2018-07-20 12:24:55 +0100
commit2143168e072391eb097a9382ab8ad2ca70ce1d11 (patch)
treed0f29467824c4ced0461b258660966332687c151
parentafa07bdd786dfd67ff9cd1deef3142b9821c26b5 (diff)
downloadgcc-2143168e072391eb097a9382ab8ad2ca70ce1d11.zip
gcc-2143168e072391eb097a9382ab8ad2ca70ce1d11.tar.gz
gcc-2143168e072391eb097a9382ab8ad2ca70ce1d11.tar.bz2
Use default visibility to work around clang -fvisibility-inlines-hidden bug
Clang (including trunk and many older versions) incorrectly marks static local variables (__tag) hidden when -fvisibility-inlines-hidden is used. This can lead to multiple instances of __tag when shares objects are used. 2018-07-20 Fangrui Song <maskray@google.com> * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use _GLIBCXX_VISIBILITY(default). From-SVN: r262903
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/shared_ptr_base.h2
2 files changed, 6 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 71a63db..93d847a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-20 Fangrui Song <maskray@google.com>
+
+ * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
+ _GLIBCXX_VISIBILITY(default).
+
2018-07-20 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/86603
diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index f3994da..870aeb9 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -508,7 +508,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend class _Sp_counted_ptr_inplace;
static const type_info&
- _S_ti() noexcept
+ _S_ti() noexcept _GLIBCXX_VISIBILITY(default)
{
alignas(type_info) static constexpr _Sp_make_shared_tag __tag;
return reinterpret_cast<const type_info&>(__tag);