Skip to content

Commit

Permalink
[libc++abi] Do not export some implementation-detail functions
Browse files Browse the repository at this point in the history
Summary:
Those functions started being mistakenly exported from the libc++abi
shared library after commit r344152 in 2018. Removing these symbols is
technically an ABI break. However, they are not part of the C++ ABI,
they haven't ever been re-exported from libc++, and they are not
declared in any public header, so it's very unlikely that calls to
these functions exist out there. Also, the functions have reserved
names, so any impacted user would have to have tried really hard
being broken by this removal.

Note that avoiding this kind of problem is exactly why we're now
controlling exported symbols explicitly with a textual list.

Also note that applying the hidden visibility attribute is necessary
because the list of exported symbols is only used on Apple platforms
for the time being.

Reviewers: phosek, mclow.lists, EricWF

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Tags: #libc

Differential Revision: https://reviews.llvm.org/D68357

llvm-svn: 373602
  • Loading branch information
ldionne committed Oct 3, 2019
1 parent f6c34de commit 6f9459f
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 8 deletions.
5 changes: 0 additions & 5 deletions libcxxabi/lib/itanium-base.exp
Expand Up @@ -366,8 +366,3 @@ __ZSt14set_unexpectedPFvvE
__ZSt15get_new_handlerv
__ZSt15set_new_handlerPFvvE
__ZSt9terminatev

# Misc
__ZN10__cxxabiv119__getExceptionClassEPK17_Unwind_Exception
__ZN10__cxxabiv119__setExceptionClassEP17_Unwind_Exceptiony
__ZN10__cxxabiv121__isOurExceptionClassEPK17_Unwind_Exception
6 changes: 3 additions & 3 deletions libcxxabi/src/cxa_exception.h
Expand Up @@ -23,9 +23,9 @@ static const uint64_t kOurExceptionClass = 0x434C4E47432B2B00; // CLNGC
static const uint64_t kOurDependentExceptionClass = 0x434C4E47432B2B01; // CLNGC++\1
static const uint64_t get_vendor_and_language = 0xFFFFFFFFFFFFFF00; // mask for CLNGC++

uint64_t __getExceptionClass (const _Unwind_Exception*);
void __setExceptionClass ( _Unwind_Exception*, uint64_t);
bool __isOurExceptionClass(const _Unwind_Exception*);
_LIBCXXABI_HIDDEN uint64_t __getExceptionClass (const _Unwind_Exception*);
_LIBCXXABI_HIDDEN void __setExceptionClass ( _Unwind_Exception*, uint64_t);
_LIBCXXABI_HIDDEN bool __isOurExceptionClass(const _Unwind_Exception*);

struct _LIBCXXABI_HIDDEN __cxa_exception {
#if defined(__LP64__) || defined(_LIBCXXABI_ARM_EHABI)
Expand Down

0 comments on commit 6f9459f

Please sign in to comment.