Commit Graph

5496 Commits

Author SHA1 Message Date
Elliott Hughes
ada8e15c9d Add OWNERS.
Test: N/A
Change-Id: I6c438abacc6f95782f7ce0bc53026499ba2c8cad
2018-12-12 13:00:22 -08:00
Peter Collingbourne
26cd9b82f8 Update run_tests.py to use Soong.
run_tests.py had bitrotted since it was last run (e.g. it used perl
which is now not allowed and the warning flags were out of date).
I changed it to use a different way of extracting the compile command
which is based on Soong instead of makefiles. This way is also
compatible with multiple build directories since it doesn't clobber
the source directory and doesn't require OUT_DIR == out.

This also changes run_tests.py to run the libcxxabi tests as well,
since they can be run using the same mechanism.

Bug: 120510768
Test: ./run_tests.py --bitness 32
Test: ./run_tests.py --bitness 64
Test: ./run_tests.py --bitness 64 --host
Change-Id: Id30129161f8519fa6c1bc106727326373ca9ab82
2018-12-05 15:47:23 -08:00
Bill Yi
20fc590391 Merge pie-platform-release to aosp-master - DO NOT MERGE
Change-Id: I92be61c172c105196b27b130b35003c3e18c11ef
2018-10-24 14:45:59 -07:00
Treehugger Robot
3d305e3daa Merge "Remove libunwindbacktrace from linux_bionic" 2018-10-23 20:29:19 +00:00
Dan Willemsen
abaea79206 Remove libunwindbacktrace from linux_bionic
Bug: 31559095
Test: attempt to build host bionic
Change-Id: I494500e4feea78ec587cab83f24a96a4735ec6a1
2018-10-11 23:47:11 -07:00
Pirama Arumuga Nainar
e21577780b Enable libcxx_static for Windows
am: 5383d2f0ba

Change-Id: I63706cdea1b999a2d60cd04b9c5f5bee6b6f30f4
2018-10-11 10:22:34 -07:00
Pirama Arumuga Nainar
5383d2f0ba Enable libcxx_static for Windows
- Use Win32 threads.  MinGW pthreads throws an error when building
libcxx since it's pthread_mutex_initializer is not constant (needs a
cast).
- Disable visibility annotations for libcxx and libcxxabi since we are
only going to support these as static libraries.
- Build sources for Windows platform support.
- Use SjLj exceptions for 32-bit.  libgcc_eh implements SjLj exception
model for 32-bit.
- Undefine WIN32_LEAN_AND_MEAN macro.  libcxx sources define them where
necessary.

Test: Build and test Windows binaries under Wine.

Change-Id: I76a440ff5d71eb5a3b7d57dd97e742a458ffbe16
2018-09-21 15:11:33 -07:00
Pirama Arumuga Nainar
270f726e23 [Win32] Overload ==, != for locale_t and long long
am: e2284c4c44

Change-Id: I26afacf9c218a7d59a799083c8b250001f5a28d0
2018-09-21 15:07:01 -07:00
Pirama Arumuga Nainar
f31a92fffa Configure ELAST for MinGW
am: e9bb2b4bd6

Change-Id: I7efc655f0d95e6f0bc6d462d17ca79d7ff9cf06e
2018-09-21 15:06:55 -07:00
Pirama Arumuga Nainar
e2284c4c44 [Win32] Overload ==, != for locale_t and long long
Summary:
_is_chartype_l (needed for isxdigit_l) in MinGW compares locale_t and NULL.
NULL is 'long long' for 64-bit, and this results in ambiguous overloads when
compiled with Clang.  Define a concrete overload for the operators to fix the
ambiguity.

Reviewers: mstorsjo, EricWF, srhines, danalbert

Subscribers: christof, cfe-commits, ldionne

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@336141 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-18 17:53:49 -07:00
Pirama Arumuga Nainar
e9bb2b4bd6 Configure ELAST for MinGW
Summary:
Use _LIBCPP_MSVCRT_LIKE while configuring ELAST, so MinGW gets the same
configuration as MSVC.

Reviewers: compnerd, srhines, danalbert, mstorsjo

Subscribers: christof, ldionne, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@335916 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-18 17:53:30 -07:00
Dan Albert
12fb8e160a Remove Android XFAIL. am: ff6224a58c
am: 1c231ba283

Change-Id: Ifa927213f6ffd5b8945b892404ad2ec240816a43
2018-06-26 15:35:56 -07:00
Dan Albert
25dcf329d9 Disable another warning in the libc++ tests. am: 262ab18c26
am: 01eb91f327

Change-Id: Ib42f98a8b5a4c202bde2d0d687d417473a08987d
2018-06-26 15:35:48 -07:00
Dan Albert
8b3b992f17 Work around upstream patch for old NDKs. am: 4bbd15bc71
am: 08da0e190b

Change-Id: Iddc67f0f472b3e1da20074f59f0a6764acee7b6f
2018-06-26 15:35:39 -07:00
Dan Albert
9477e60ffd Merge to upstream r334917. am: 38a905636d
am: 1c05ba75a0

Change-Id: I3a5541acb07f73d4fcdb8de9c25012ec8eeb9865
2018-06-26 15:35:30 -07:00
Dan Albert
1c231ba283 Remove Android XFAIL.
am: ff6224a58c

Change-Id: I91ccd04909707035225fea163ea5c1eb3e6ccc74
2018-06-26 15:20:52 -07:00
Dan Albert
01eb91f327 Disable another warning in the libc++ tests.
am: 262ab18c26

Change-Id: I85ecd24e10138511c7a117b4d00c4eb3bdc8b9fc
2018-06-26 15:20:46 -07:00
Dan Albert
08da0e190b Work around upstream patch for old NDKs.
am: 4bbd15bc71

Change-Id: Ic356526c47124516a7b418bf4108d979ab3ef69a
2018-06-26 15:20:40 -07:00
Dan Albert
1c05ba75a0 Merge to upstream r334917.
am: 38a905636d

Change-Id: Idbd029022fb86b6b9df55f2eefb8fc2f735a1fdb
2018-06-26 15:20:34 -07:00
Dan Albert
ff6224a58c Remove Android XFAIL.
We have this now.

Test: ./run_tests.py
Bug: None
Change-Id: Ib8df5d073c74eb66eb614650d06d2e51117acef6
2018-06-26 13:00:52 -07:00
Dan Albert
262ab18c26 Disable another warning in the libc++ tests.
Test: ./run_tests.py
Bug: None
Change-Id: I74aa7593eafa719e999a59bb50fad4eefc394350
2018-06-26 12:53:15 -07:00
Dan Albert
4bbd15bc71 Work around upstream patch for old NDKs.
The Chrome folks are trying to build libc++ with an old NDK and added
checks to handle that, but we don't have <android/ndk-version.h> in
the platform.

Test: make checkbuild
Bug: None
Change-Id: Ic28bd67ecee1a93b47ce0b307415c3ff25b449eb
2018-06-26 11:07:52 -07:00
Dan Albert
38a905636d Merge to upstream r334917.
Bug: None
Test: ./run_tests.py --bitness 32
Test: ./run_tests.py --bitness 64
Change-Id: If8594f80130bd7dd55d3c4f8224fde54844b1d4a
2018-06-21 15:12:15 -07:00
Richard Smith
5aa278078e Fix libcxx tests after clang r334677.
Feature test macro versions may have a trailing L.


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334917 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-17 19:58:45 +00:00
Marshall Clow
8d00e543f4 Remove P0771, which was not passed in Rapperswil
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334894 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-16 18:03:29 +00:00
Stephan T. Lavavej
9165f9d181 [libcxx] [test] Strip trailing whitespace. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334676 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-14 00:12:20 +00:00
Stephan T. Lavavej
9c0cb24c23 [libcxx] [test] Update msvc_stdlib_force_include.hpp.
MSVC's STL removed _SCL_SECURE_NO_WARNINGS.

MSVC's STL implemented feature-test macros.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334675 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-14 00:12:14 +00:00
Petr Hosek
204d5ec7f1 [CMake] Use common variable for all header targets NFC
This simplifies the handling of header targets.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334477 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-12 06:58:06 +00:00
Petr Hosek
8650687840 [CMake] Add a missing target dependency on C++ ABI headers
This resolves the breakage introduced in r334468 which results in
build error when using CMake Makefile generator.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334470 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-12 03:31:03 +00:00
Petr Hosek
f48515b28b Reland "Use custom command and target to install libc++ headers"
Using file(COPY FILE...) has several downsides. Since the file command
is only executed at configuration time, any changes to headers made
after the initial CMake execution are ignored. This can lead to subtle
errors since the just built Clang will be using stale libc++ headers.
Furthermore, since the headers are copied prior to executing the build
system, this may hide missing dependencies on libc++ from other LLVM
components.

This changes replaces the use of file(COPY FILE...) command with a
custom command and target which addresses all aforementioned issues and
matches the implementation already used by other LLVM components that
also install headers like Clang builtin headers.

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334468 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-12 03:10:02 +00:00
Marshall Clow
385a6d473f Update the to-do list with motions from Rapperswil.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334467 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-12 02:45:30 +00:00
Volodymyr Sapsai
c19d47a81b Mark the test using <experimental/memory_resource> to require c++experimental.
When built against the old libc++ version the test was causing linker error

Undefined symbols for architecture x86_64:
  "std::experimental::fundamentals_v1::pmr::new_delete_resource()", referenced from:
      void test_evil<WidgetV0, WidgetV0>() in construct_piecewise_pair_evil.pass.cpp.o
      void test_evil<WidgetV0, WidgetV1>() in construct_piecewise_pair_evil.pass.cpp.o
      void test_evil<WidgetV0, WidgetV2>() in construct_piecewise_pair_evil.pass.cpp.o
      void test_evil<WidgetV0, WidgetV3>() in construct_piecewise_pair_evil.pass.cpp.o
      void test_evil<WidgetV1, WidgetV0>() in construct_piecewise_pair_evil.pass.cpp.o
      void test_evil<WidgetV1, WidgetV1>() in construct_piecewise_pair_evil.pass.cpp.o
      void test_evil<WidgetV1, WidgetV2>() in construct_piecewise_pair_evil.pass.cpp.o
      ...



git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334431 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-11 19:42:27 +00:00
Eric Fiselier
00e59b46f0 Remove unused code from __functional_base. NFC.
Patch from Arthur O'Dwyer.

`__user_alloc_construct_impl` is used by <experimental/memory_resource>, but
this `__user_alloc_construct` is never used.

Also, `<experimental/memory_resource>` doesn't need a full definition of
`std::tuple`; just the forward declaration in `<__tuple>` will suffice.

Reviewed as https://reviews.llvm.org/D46806

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334069 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-06 06:42:27 +00:00
Eric Fiselier
d54a86893f Fix test failures after r334053.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334056 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-06 00:13:49 +00:00
Eric Fiselier
301518c94e Fix PR37694 - std::vector doesn't correctly move construct allocators.
C++2a[container.requirements.general]p8 states that when move constructing
a container, the allocator is move constructed. Vector previously copy
constructed these allocators. This patch fixes that bug.

Additionally it cleans up some unnecessary allocator conversions
when copy constructing containers. Libc++ uses
__internal_allocator_traits::select_on_copy_construction to select
the correct allocator during copy construction, but it unnecessarily
converted the resulting allocator to the user specified allocator
type and back. After this patch list and forward_list no longer
do that.

Technically we're supposed to be using allocator_traits<allocator_type>::select_on_copy_construction,
but that should seemingly be addressed as a separate patch, if at all.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@334053 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-05 22:32:52 +00:00
Erik Pilkington
55513c8efb Fix a strict aliasing violation in map and unordered_map.
These containers type-punned between pair<K, V> and pair<const K, V> as an
optimization. This commit instead provides access to the pair via a pair of
references that assign through to the underlying object. It's still undefined to
mutate a const object, but clang doesn't optimize on this for data members, so
this should be safe.

Differential revision: https://reviews.llvm.org/D47607

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333948 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-04 20:38:23 +00:00
JF Bastien
8d476cd679 Mark __c11_atomic_load as const
Summary:
C++11 onwards specs the non-member functions atomic_load and atomic_load_explicit as taking the atomic<T> by const (potentially volatile) pointer. C11, in its infinite wisdom, decided to drop the const, and C17 will fix this with DR459 (the current draft forgot to fix B.16, but that’s not the normative part).

This patch fixes the libc++ version of the __c11_atomic_load builtins defined for GCC's compatibility sake.

D47618 takes care of the clang side.

Discussion: http://lists.llvm.org/pipermail/cfe-dev/2018-May/058129.html

<rdar://problem/27426936>

Reviewers: EricWF, mclow.lists

Subscribers: christof, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333776 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-01 18:02:53 +00:00
JF Bastien
c8846cc964 Filesystem tests: un-confuse write time
Summary:
The filesystem test was confused about access versus write / modification time. The spec says:

  file_time_type last_write_time(const path& p, error_code& ec) noexcept;
  Returns: The time of last data modification of p, determined as if by the value of the POSIX stat structure member st_mtime obtained as if by POSIX stat(). The signature with argument ec returns file_time_type::min() if an error occurs.

The test was looking at st_atime, not st_mtime, when comparing the result from last_write_time. That was probably due to using a pair instead of naming things nicely or using types. I opted to rename things so it's clearer.

This used to cause test bot failures.

<rdar://problem/40648859>

Reviewers: EricWF, mclow.lists, aemerson

Subscribers: christof, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333723 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-01 04:59:48 +00:00
Eric Fiselier
6d9d212ebb Update ABI lists after change in r333467.
r333467 updated the symbols exported by libc++.so/dylib by changing
the ODR usage of __uncaught_exception/__uncaught_exceptions. This
should not be a breaking change.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333481 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-29 23:52:14 +00:00
JF Bastien
e4063adf19 Mark deduction guide tests as failing on apple-clang-9
As discussed here: http://lists.llvm.org/pipermail/cfe-dev/2018-May/058116.html
The tests fail on clang-5, as well as apple-clang-9. Mark them as such.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333479 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-29 23:28:04 +00:00
Marshall Clow
1e6ac5e8f4 Fix embarrasing typo in uncaught_exceptions. Update tests to really test this. Thanks to Peter Klotz for calling my attention to this.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333467 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-29 22:25:42 +00:00
Marshall Clow
ab343bb5ae Mark __clear_and_shrink() as noexcept. This prevents the generation of a catch block and call to terminate in string's move assignment. Thanks to Howard for the 'catch'.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333435 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-29 17:04:37 +00:00
Eric Fiselier
40a29e79c2 LWG 2969 "polymorphic_allocator::construct() shouldn't pass resource()"
Patch from Arthur O'Dwyer.

In the TS, `uses_allocator` construction for `pair` tried to use an allocator
type of `memory_resource*`, which is incorrect because `memory_resource*` is
not an allocator type. LWG 2969 fixed it to use `polymorphic_allocator` as the
allocator type instead.

https://wg21.link/lwg2969

(D47090 included this in `<memory_resource>`; at Eric's request, I've split
this out into its own patch applied to the existing
`<experimental/memory_resource>` instead.)

Reviewed as https://reviews.llvm.org/D47109


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333384 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-29 00:08:47 +00:00
Marshall Clow
d1e11a1a6f Fix up the final bits of breakage due to clang v5 generating bad implicit template deduction guides - specifically for copy-ctors
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333381 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-28 19:20:21 +00:00
Marshall Clow
afdadcd893 Mark the template deduction tests as UNSUPPORTED on clang 5, because it deduces the wrong type.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333376 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-28 15:42:47 +00:00
JF Bastien
4b72294338 Revert "Add nonnull; use it for atomics"
That's r333325, as well as follow-up "Fix GCC handling of ATOMIC_VAR_INIT"
r333327.

Marshall asked to revert:

Let's have a discussion about how to implement this so that it is more friendly
to people with installed code bases. We've had *extremely* loud responses to
unilaterally adding warnings - especially ones that can't be easily disabled -
to the libc++ code base in the past.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333351 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-26 19:44:45 +00:00
JF Bastien
895c4f3ec7 Fix GCC handling of ATOMIC_VAR_INIT
r333325 from D47225 added warning checks, and the test was written to be C++11 correct by using ATOMIC_VAR_INIT (note that the committee fixed that recently...). It seems like GCC can't handle ATOMIC_VAR_INIT well because it generates 'type 'std::atomic<int>' cannot be initialized with an initializer list' on bot libcxx-libcxxabi-x86_64-linux-ubuntu-cxx03. Drop the ATOMIC_VAR_INITs since they weren't required to test the diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333327 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-26 00:13:53 +00:00
JF Bastien
8bacb9422b Add nonnull; use it for atomics
Summary:
The atomic non-member functions accept pointers to std::atomic / std::atomic_flag as well as to the non-atomic value. These are all dereferenced unconditionally when lowered, and therefore will fault if null. It's a tiny gotcha for new users, especially when they pass in NULL as expected value (instead of passing a pointer to a NULL value). We can therefore use the nonnull attribute to denote that:

  - A warning should be generated if the argument is null
  - It is undefined behavior if the argument is null (because a dereference will segfault)

This patch adds support for this attribute for clang and GCC, and sticks to the subset of the syntax both supports. In particular, work around this GCC oddity:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60625

The attributes are documented:

  - https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html
  - https://clang.llvm.org/docs/AttributeReference.html#nullability-attributes

I'm authoring a companion clang patch for the __c11_* and __atomic_* builtins, which currently only warn on a subset of the pointer parameters.

In all cases the check needs to be explicit and not use the empty nonnull list, because some of the overloads are for atomic<T*> and the values themselves are allowed to be null.

<rdar://problem/18473124>

Reviewers: arphaman, EricWF

Subscribers: aheejin, christof, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333325 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-25 23:43:53 +00:00
JF Bastien
adf78877c9 Fix optional<char> test breakage
It seems GCC and clang disagree. Talked to mclow on IRC, disabling for now.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333317 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-25 21:32:27 +00:00
JF Bastien
3dfc68d12a Fix array deduction guide test breakage
No matching constructor

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@333315 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-25 21:17:43 +00:00