[libcxx] Build with -fvisibility-inlines-hidden -- Remove 20 inline definitions from...
authorEric Fiselier <eric@efcs.ca>
Tue, 25 Oct 2016 19:43:44 +0000 (19:43 +0000)
committerEric Fiselier <eric@efcs.ca>
Tue, 25 Oct 2016 19:43:44 +0000 (19:43 +0000)
commit10b12f05d42c77396035f06da356a2122764acf6
treeb374c2422ca6c8e045da0665518fff6dce985eb5
parenta624409cb54230d304a2c6e19209176166b49085
[libcxx] Build with -fvisibility-inlines-hidden -- Remove 20 inline definitions from the dylib

Summary:
This patch turns on `-fvisibility-inlines-hidden` when building  the dylib. This is important so that libc++.dylib doesn't accidentally export inline-functions which are ODR used somewhere in the dylib.

On OS X this change has no effect on the current ABI of the dylib. Unfortunately on Linux there are already ~20 inline functions which are unintentionally exported by the dylib. Almost all of these are implicitly generated destructors. I believe removing these function definitions is safe because every "linkage unit" which uses these functions has its own definition, and therefore shouldn't be dependent on libc++.dylib to provide them.

Also could a FreeBSD maintainer comment on the ABI compatibility of this patch?

Reviewers: mclow.lists, emaste, dexonsmith, joker-eph-DISABLED, jroelofs, danalbert, mehdi_amini, compnerd, dim

Subscribers: beanz, mgorny, cfe-commits, modocache

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

llvm-svn: 285101
libcxx/CMakeLists.txt
libcxx/lib/abi/CHANGELOG.TXT
libcxx/lib/abi/x86_64-linux-gnu.abilist