Commit Graph

266 Commits

Author SHA1 Message Date
Louis Dionne
e97eb5d5ba [libc++] Update ABI list for ABI v2
I forgot to add symbols for filesystem.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@363603 91177308-0d34-0410-b5e6-96231b3b80d8
2019-06-17 19:37:26 +00:00
Petr Hosek
548aa18445 [libcxx] Move CMake file to src, avoid using globs
This addresses the longstanding FIXME and makes libc++ build more
similar to other runtimes.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@359656 91177308-0d34-0410-b5e6-96231b3b80d8
2019-05-01 06:40:36 +00:00
Louis Dionne
df0111c292 [libc++][CMake] Refactor how we link against system libraries
Summary:
Instead of populating the global LIBCXX_LIBRARIES, we use the link-time
dependency management built into CMake to propagate link flags. This
leads to a cleaner and easier-to-follow build.

Reviewers: phosek, smeenai, EricWF

Subscribers: mgorny, christof, jkorous, dexonsmith, jfb, mstorsjo, libcxx-commits

Tags: #libc

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@359571 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-30 15:44:19 +00:00
Richard Smith
ddc44427f8 Remove incorrect explicit instantiation declarations for valarray
libc++ ABI v1 provides three valarray symbols as part of the shared library:

valarray<size_t>::valarray(size_t)
valarray<size_t>::~valarray()
valarray<size_t>::resize(size_t, size_t)

The first two of these are intended to be removed in V2 of the ABI: they're
attributed _LIBCPP_HIDE_FROM_ABI_AFTER_V1, and  it appears that the intention
is that these symbols from the library are not used even when building using
the V1 ABI. However, there are explicit instantiation declarations for all
three symbols in the header, which are not correct as we do not intend to find
an instantiation of these functions that is provided elsewhere.

(A recent change to clang to properly diagnose explicit instantiation
declarations of internal linkage functions -- required by [temp.explicit]p13 --
had to be rolled back because it diagnosed these explicit instantiations.)

Remove the explicit instantiation declarations, and remove the explicit
instantiation definitions for V2 of the libc++ ABI onwards.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@359243 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-25 21:31:58 +00:00
Petr Hosek
af3bb36aa2 [libcxx] Update gen_link_script.py to support different input and output
This enables the use of this script from other build systems like
GN which don't support post-build actions as well as for static
archives.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@358915 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-22 19:51:33 +00:00
Louis Dionne
2696247a2f [libc++] Make sure we re-export some missing libc++abi symbols from libc++
Summary:
Ensure we re-export __cxa_throw_bad_array_new_length and
__cxa_uncaught_exceptions from libc++, since they are now
provided by libc++abi.

Doing this allows us to stop linking explicitly against libc++abi in
the libc++abi tests, since libc++ re-exports all the necessary symbols.
However, there is one caveat to that. We don't want libc++ to re-export
__cxa_uncaught_exception (the singular form), since it's only provided
for backwards compatibility. Hence, for the single test where we check
this backwards compatibility, we explicitly link against libc++abi.

PR27405
PR22654

Reviewers: EricWF

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Tags: #libc

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@358690 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-18 17:18:15 +00:00
Petr Hosek
8a82647271 [CMake] Split linked libraries for shared and static libc++
Some linker libraries are only needed for shared libc++, some only
for static libc++, combining these together in LIBCXX_LIBRARIES and
LIBCXX_INTERFACE_LIBRARIES can introduce unnecessary dependencies.

This changes splits those up into LIBCXX_SHARED_LIBRARIES and
LIBCXX_STATIC_LIBRARIES matching what libc++abi already does.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@358614 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-17 21:41:09 +00:00
Louis Dionne
2113da5756 [NFC] Add missing revision number in libc++ ABI changelog
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@358411 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-15 14:29:33 +00:00
Martin Storsjo
56dd7238c9 [CMake] Fix statically linking in libcxxabi if built separately
In this case, CMake doesn't know about the c++abi target within the
same CMake run.

This reverts this aspect back to how it was before SVN r357811.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@358009 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-09 14:31:09 +00:00
Louis Dionne
9f8a406c0e [libc++] Remove install_name and compatibility_version on OS X
CMake already specifies those, and we never actually want those to be
used. In fact, r357811 re-ordered those flags in a way that the
explicitly-provided install_name was overriding the CMake-provided
install_name (instead of the other way around). This caused the dylib
to be considered a system dylib, and hence the explicitly provided rpath
to be ignored. This, in turn, caused some unit tests to start linking
against the system libc++.dylib instead of the freshly-built one.
Specifically, the unit tests that started linking against the system
dylib are those that didn't specify a DYLD_LIBRARY_PATH, such as
last_write_time.sh.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@357946 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-08 21:37:42 +00:00
Louis Dionne
2884b592ec [libc++][CMake] Make sure the benchmarks link against libc++abi
The refactoring in r357811 made it so that we didn't add the ABI library
to the list of LIBCXX_LIBRARIES. As a result, benchmarks didn't link to
the ABI library and were missing symbols. This broke the build bots.

As a drive-by fix, we also provide the SHARED ABI library to the linker
script instead of the STATIC ABI library.

This couldn't be discovered on Apple platforms because libc++.dylib
re-exports libc++abi.dylib symbols there.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@357818 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-05 21:05:32 +00:00
Louis Dionne
dda98abc8d [libc++] Localize CMake code only related to the shared library
Summary:
There's a lot of CMake logic that's only relevant to the shared library,
yet it was using a code path and setting variables that impact both the
shared and the static libraries. This patch moves this logic so that it
clearly only impacts the shared library.

Reviewers: phosek, smeenai, EricWF

Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits

Tags: #libc

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@357811 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-05 20:29:54 +00:00
Petr Hosek
d5529b8cd9 [CMake] Differentiate between static and shared libc++abi
This addresses the issue introduced in r354212 which broke the case when
static libc++abi is merged into static libc++, but shared libc++ is
linked against shared libc++. There are 4 different possible
combinations which is difficult to capture using a single variable. This
change splits LIBCXX_CXX_ABI_LIBRARY into two:
LIBCXX_CXX_SHARED_ABI_LIBRARY and LIBCXX_CXX_STATIC_ABI_LIBRARY to
handle the shared and static cases. This in turn allows simplification
of some of the logic around merging of static archives.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@357556 91177308-0d34-0410-b5e6-96231b3b80d8
2019-04-03 01:33:14 +00:00
Louis Dionne
244334750d [libc++][CMake] Allow merging libc++abi.a into libc++ even on Apple platforms
Summary:
I can't see a good reason to disallow this, even though it isn't the
standard way we build libc++ for Apple platforms.

Making this work on Apple platforms requires using different flags for
--whole-archive and removing the -D flag when running `ar` to merge
archives because that flag isn't supported by the `ar` shipped on Apple
platforms. This shouldn't be an issue since the -D option appears to be
enabled by default in GNU `ar`.

Reviewers: phosek, EricWF, serge-sans-paille

Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356903 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-25 14:56:29 +00:00
Louis Dionne
61ce4ebc45 [libc++] Update the list of symbols exported from libc++abi for new/delete
When libc++ does not provide new/delete, libc++abi now also provides the
aligned allocation and deallocation functions, so those should be part of
the re-export list for libc++.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356804 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-22 20:18:17 +00:00
Louis Dionne
0b3b8d8d65 [libc++] Re-export the sjlj ABI v2 for ARM architectures
We were previously not exporting the right ABI version of libc++abi.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356798 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-22 19:38:53 +00:00
Eric Fiselier
cdb3094601 Allow disabling of filesystem library.
Summary: Filesystem doesn't work on Windows, so we need a mechanism to turn it off for the time being.

Reviewers: ldionne, serge-sans-paille, EricWF

Reviewed By: EricWF

Subscribers: mstorsjo, mgorny, christof, jdoerfert, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356633 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-21 00:04:31 +00:00
Louis Dionne
3af5f5e110 [libc++][CMake] Clean up some of the libc++ re-exporting logic
Summary:
This change allows specifying the version of libc++abi's ABI to re-export
when configuring CMake. It also clearly identifies which ABI version of
libc++abi each export file contains.

Finally, it removes hardcoded knowledge about the 10.9 SDK for MacOS,
since that knowledge is not relevant anymore. Indeed, libc++ can't be
built with the toolchain that came with the 10.9 SDK anyway because
the version of Clang it includes is too old (for example if you want
to build a working libc++.dylib, you need bugfixes to visibility
attributes that are only in recent Clangs).

Reviewers: dexonsmith, EricWF

Subscribers: mgorny, christof, jkorous, arphaman, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356587 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-20 18:16:24 +00:00
Louis Dionne
b0ee47d012 [libc++] Complete the ABI changelog after landing <filesystem> in the dylib
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356523 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-19 21:32:37 +00:00
Louis Dionne
3b886a1ce8 [libc++] Build <filesystem> support as part of the dylib
Summary:
This patch treats <filesystem> as a first-class citizen of the dylib,
like all other sub-libraries (e.g. <chrono>). As such, it also removes
all special handling for installing the filesystem library separately
or disabling part of the test suite from the lit command line.

Unlike the previous attempt (r356500), this doesn't remove all the
filesystem tests.

Reviewers: mclow.lists, EricWF, serge-sans-paille

Subscribers: mgorny, christof, jkorous, dexonsmith, jfb, jdoerfert, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356518 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-19 20:56:13 +00:00
Louis Dionne
e76d13a487 Revert "[libc++] Build <filesystem> support as part of the dylib"
When I applied r356500 (https://reviews.llvm.org/D59152), I somehow
deleted all of filesystem's tests. I will revert r356500 and re-apply
it properly.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356505 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-19 19:27:29 +00:00
Eric Fiselier
e598abfa71 Fixup ABI lists on Linux after adding <filesystem> to the dylib.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356503 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-19 19:20:43 +00:00
Louis Dionne
582679a3fe [libc++] Build <filesystem> support as part of the dylib
Summary:
This patch treats <filesystem> as a first-class citizen of the dylib,
like all other sub-libraries (e.g. <chrono>). As such, it also removes
all special handling for installing the filesystem library separately
or disabling part of the test suite from the lit command line.

Reviewers: mclow.lists, EricWF, serge-sans-paille

Subscribers: mgorny, christof, jkorous, dexonsmith, jfb, jdoerfert, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356500 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-19 19:09:33 +00:00
Eric Fiselier
eb2e397396 Remove exception throwing debug mode handler support.
Summary:
The reason libc++ implemented a throwing debug mode handler was for ease of testing. Specifically,
I thought that if a debug violation aborted, we could only test one violation per file. This made
it impossible to test debug mode. Which throwing behavior we could test more!

However, the throwing approach didn't work either, since there are debug violations underneath noexcept
functions. This lead to the introduction of `_NOEXCEPT_DEBUG`, which was only noexcept when debug
mode was off.

Having thought more and having grown wiser, `_NOEXCEPT_DEBUG` was a horrible decision. It was
viral, it didn't cover all the cases it needed to, and it was observable to the user -- at worst
changing the behavior of their program.

  This patch removes the throwing debug handler, and rewrites the debug tests using 'fork-ing' style
  death tests.

Reviewers: mclow.lists, ldionne, thomasanderson

Reviewed By: ldionne

Subscribers: christof, arphaman, libcxx-commits, #libc

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356417 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-18 21:50:12 +00:00
Louis Dionne
41aeda8093 [libc++][CMake] Do not define cxx_shared_EXPORTS when building the shared library
CMake will define -Dcxx_shared_EXPORTS when building the shared library
by default. In theory, this is used to signal to the library that we're
building a shared library and that dllimport/dllexport should be used.
However, we already have our own way of doing that, so I'm removing this
define to avoid meaningless command line arguments in the build.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356167 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-14 17:15:47 +00:00
Louis Dionne
36684e49e2 [libc++][CMake] Fix typo introduced in r356150
That typo broke the build when the shared library build was disabled.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356155 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-14 14:52:26 +00:00
Louis Dionne
e54dd56e8e [libc++] Do not force building with -fPIC (re-applying)
Summary:
In r355746, we stopped forcing to build with -fPIC because that should
be specified by the CMAKE_POSITION_INDEPENDENT_CODE option at CMake
configure time (and by default -fPIC is used for shared libraries anyways).

However, r355746 had to be reverted in r355756 because we were not
actually building the shared library with -fPIC. The reason is that
we were sharing an object library between the static and the shared
library, which caused flags for static libraries to be used when
building object files that were going to be used for a shared library.

Since this was resolved by r356150, we can stop forcing -fPIC again.

Reviewers: EricWF, smeenai

Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356153 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-14 14:38:38 +00:00
Louis Dionne
18616964ee [libc++] Do not share an object library to create the static/shared libraries
Summary:
The problem with using an object library for doing this is that it prevents
the shared library and the static library from being built with the right
default flags. For example, CMake will build shared libraries with -fPIC
by default, but not static libraries. Using an object library to create
the shared library will prevent the right default flags for shared
libraries from being used.

As a side effect, this patch also localizes the logic related to building
a hermetic static library to the static library case, making clear that
this has no effect on the shared library.

Reviewers: phosek, EricWF

Subscribers: mgorny, christof, jkorous, dexonsmith, jdoerfert, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@356150 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-14 14:19:08 +00:00
Eric Fiselier
a23faa9455 Revert "[libc++] Do not force building with -fPIC"
This reverts commit r355764.

CMake does not turn -fPIC on for us by default. so this patch breaks
standalone builds. The only reason it hasn't broken any bots is because
LLVM turns on and specifies '-fPIC' for us.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355756 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-08 23:27:46 +00:00
Louis Dionne
11e3f8c4d4 [libc++] Do not force building with -fPIC
Summary:
Whether we build with -fPIC should be specified by the
CMAKE_POSITION_INDEPENDENT_CODE option at configure time.
Note that this patch doesn't change the behavior when building
by default, since -fPIC is used for shared libraries by default.

Reviewers: EricWF

Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355746 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-08 22:24:12 +00:00
Louis Dionne
6fb366d0be [NFC] Add missing revision information to ABI Changelog
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355732 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-08 21:01:25 +00:00
Matthew Voss
7f35e38753 Revert "[runtimes] Move libunwind, libc++abi and libc++ to lib/ and include/"
This broke the windows bots.

This reverts commit 28302c66d2586074f77497d5dc4eac7182b679e0.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355725 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-08 20:33:55 +00:00
Petr Hosek
7f02475f6c [runtimes] Move libunwind, libc++abi and libc++ to lib/ and include/
This change is a consequence of the discussion in "RFC: Place libs in
Clang-dedicated directories", specifically the suggestion that
libunwind, libc++abi and libc++ shouldn't be using Clang resource
directory.  Tools like clangd make this assumption, but this is
currently not true for the LLVM_ENABLE_PER_TARGET_RUNTIME_DIR build.
This change addresses that by moving the output of these libraries to
lib/<target> and include/ directories, leaving resource directory only
for compiler-rt runtimes and Clang builtin headers.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355665 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-08 05:35:22 +00:00
Eric Fiselier
1f820d84ec Fix -fsanitize=vptr badness in <__debug>
Summary:

This patch fixes a lifetime bug when inserting a new container into the debug database. It is
diagnosed by UBSAN when debug mode is enabled. This patch corrects how nodes are constructed
during insertion.

The fix requires unconditionally breaking the debug mode ABI. Users should not expect ABI
stability from debug mode.

Reviewers: ldionne, serge-sans-paille, EricWF

Reviewed By: EricWF

Subscribers: mclow.lists, christof, libcxx-commits

Tags: #libc

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355367 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-05 02:10:31 +00:00
Louis Dionne
7f3087ed7c [libc++] Remove old CMake workaround
We haven't had any complaints so far, and I don't think anybody builds
libc++ from source for that old platform anymore.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355336 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-04 20:52:14 +00:00
Eric Fiselier
bc415828df Make LIBCXX_STANDARD_VER configurable
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353649 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 18:27:55 +00:00
Eric Fiselier
b9a4d073af Format sym_extract.py output to minimize diff output.
Different versions of python print dictionaries in different orders.
 This can mess up diffs when updating ABI lists. This patch uses
 pprint.pformat to print the dicts to get a consistent ordering.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353634 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 04:48:54 +00:00
Eric Fiselier
25c089ef5d Add missing symbols to Apple v2 abi list.
The itoa symbols were added and their addition is documented in the CHANGELOG.
I'm not sure why the valarray symbols were missing previously, but they're
present in the v1 ABI lists and should be here as well.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353633 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 04:41:48 +00:00
Eric Fiselier
e8be8717a3 Add ABI list directories for 8.0
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353632 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 04:09:46 +00:00
Petr Hosek
d4a2081367 [CMake] Use correct visibility for linked libraries in CMake
When linking library dependencies, we shouldn't need to export linked
libraries to dependents. We should be explicit about this in
target_link_libraries, otherwise other targets that depend on these such
as sanitizers get repeated (and possibly even conflicting) dependencies.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@352688 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-30 23:18:05 +00:00
Petr Hosek
7b459f3f48 Revert "[CMake] Use correct visibility for linked libraries in CMake"
This reverts commit r352654: this broke libcxx and sanitizer bots.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@352658 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-30 19:51:18 +00:00
Petr Hosek
30f748dc47 [CMake] Use correct visibility for linked libraries in CMake
When linking library dependencies, we shouldn't need to export linked
libraries to dependents. We should be explicit about this in
target_link_libraries, otherwise other targets that depend on these such
as sanitizers get repeated (and possibly even conflicting) dependencies.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@352654 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-30 19:27:26 +00:00
Louis Dionne
b8bdc7a157 [NFC] Add missing revision for removal of bad_array_length in ABI changelog
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@352513 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-29 16:30:11 +00:00
Petr Hosek
9e444eb82d [libcxx] Support building hermetic static library
This is useful when static libc++ library is being linked into
shared libraries that may be used in combination with libraries.
We want to avoid we exporting libc++ symbols in those cases where
this option is useful. This is provided as a CMake option and can
be enabled by libc++ vendors as needed.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@350489 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-06 06:14:31 +00:00
Louis Dionne
c28aca18e5 [libcxx] Remove bad_array_length
Summary:
std::bad_array_length was added by n3467, but this never made it into C++.
This commit removes the definition of std::bad_array_length from the headers
AND from the shared library. See the comments in the ABI changelog for details
about the ABI implications of this change.

Reviewers: mclow.lists, dexonsmith, howard.hinnant, EricWF

Subscribers: christof, jkorous, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347903 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-29 19:44:57 +00:00
Louis Dionne
c56c9cffe6 [libcxx] Make sure the re-export logic works when paths contain spaces
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347711 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-27 21:13:31 +00:00
Louis Dionne
f27a903f77 [libcxx] Fix libc++ re-exporting logic when Command Line Tools are not installed
Summary:
When the Xcode Command Line tools are not installed but CMAKE_OSX_SYSROOT is
set, we would try to re-export symbols from the libc++abi.dylib shipped in
the sysroot, which does not exist. This commit changes the build on OS X to
always re-export symbols from the explicit re-export lists, which doesn't
change depending on what system you're building on, and is therefore much
less flaky.

Reviewers: EricWF, mclow.lists

Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347708 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-27 20:59:47 +00:00
Louis Dionne
23e4ddc020 [NFC][libcxx] Add revision number to ABI changelog
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347396 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-21 16:27:14 +00:00
Louis Dionne
507fe4022b [libcxx] Make sure we can build with -fvisibility=hidden on Linux
Summary:
This commit marks a few functions as hidden and removes them from the ABI list
on Linux such that libc++ can be built with -fvisibility=hidden. The functions
marked as hidden by this patch were exported from the shared object only
because they were implicitly instantiated function templates. It is safe
to stop exporting those symbols from the shared object because nobody could
actually depend on them: implicit instantiations are not taken from shared
objects.

The symbols removed in this commit are basically the same that had been
removed in https://reviews.llvm.org/D53868, but that patch had to be reverted
because it broke the build (because the functions were not marked as hidden
like this patch does).

Reviewers: EricWF, mclow.lists

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@347395 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-21 16:24:46 +00:00
Louis Dionne
3a73f018a2 Correct ABI list change wrongly advertised as being in the 7.0 release
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@345670 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-30 23:24:02 +00:00