Commit Graph

142 Commits

Author SHA1 Message Date
Eric Fiselier d1804db966 Fix [libcxxabi] Fix warning about uninitialized const member.
llvm-svn: 272824
2016-06-15 19:59:16 +00:00
Eric Fiselier 567b755b7c Fix warning about uninitialized const member. NFC
llvm-svn: 272823
2016-06-15 19:48:26 +00:00
Eric Fiselier 78621e4076 [libcxxabi] Reorder base class initializers in libc++abi tests to prevent -Wreorder
Summary:
This patch fixes -Wreorder warnings on test classes with virtual bases. Since the compiler is performing the reordering anyway this change *should* have NFC.

However the test notes that it is checking that "virtual base classes work properly". Since initialization order is clearly part of correctness I want to confirm that this wasn't an intentional mistake.



Reviewers: mclow.lists, howard.hinnant

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D21396

llvm-svn: 272821
2016-06-15 19:33:01 +00:00
Eric Fiselier f5ff11c432 Suppress warnings about the operations currently under test.
llvm-svn: 272819
2016-06-15 19:07:19 +00:00
Eric Fiselier ffd1893df5 [libcxxabi] Allow target flags to affect configuration tests.
Summary:
This patch changes the libc++abi CMake so that it adds certain target flags like  '-m32' or '--gcc-toolchain' before including `config-ix.cmake`.
Since these flags can affect things like `check_library_exists([...])` they needed to be added before the tests are performed.

Additionally this patch adds `LIBCXXABI_BUILD_32_BITS` which defaults to `LLVM_BUILD_32_BITS`.

This patch fixes:

https://llvm.org/bugs/show_bug.cgi?id=27950
https://llvm.org/bugs/show_bug.cgi?id=27959

Reviewers: danalbert, jroelofs, bcraig, compnerd, EricWF

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D20886

llvm-svn: 271470
2016-06-02 02:18:31 +00:00
Asiri Rathnayake ece18f4c14 [libcxxabi][test] Add missing return statement.
This causes a test failure when running with -Werror=return-type.

NFC.

llvm-svn: 271423
2016-06-01 19:13:53 +00:00
Asiri Rathnayake 57e446dafa [libcxxabi] Introduce a -fno-exceptions libc++abi libary variant
Currently there is only support for a -fno-exceptions libc++ build. This is
problematic for functions such as std::terminate() which are defined in
libc++abi and using any of those functions throws away most of the benefits
of using -fno-exceptions (code-size). This patch introduces a -fno-exceptions
libc++abi build to address this issue.

This new variant of libc++abi cannot be linked against any with-exceptions
code as some symbols necessary for handling exceptions are missing in this
library.

Differential revision: http://reviews.llvm.org/D20677

Reviewers: EricWF, mclow.lists, bcraig
llvm-svn: 271267
2016-05-31 12:01:32 +00:00
Ben Craig e9fdfd868a Enable testing for static libc++abi
This change leverages framework changes made in libcxx. See those changes for
more details. (http://reviews.llvm.org/D16544)

Some Mac specific logic for testing against libc++abi had to be moved from
libcxxabi's config.py, as it was overriding choices made in libcxx's config.py.
That logic is now in libcxx's target_info.py.

http://reviews.llvm.org/D16545

llvm-svn: 266729
2016-04-19 12:47:38 +00:00
Jonas Hahnfeld 626557be6b [libcxxabi] Disable cxa_thread_atexit_test if unavailable
The feature check is already in place when building the library but wasn't
honored for the tests.

Differential Revision: http://reviews.llvm.org/D18205

llvm-svn: 263699
2016-03-17 10:00:24 +00:00
Ben Craig 5d78477ba1 Reducing stack usage of test
This test has a lot of classes with large amounts of manually inserted padding in them, presumably to prevent various optimizations. The test then creates lots of these objects on the stack. On embedded targets, this was usually enough to overflow the stack.

I moved the objects to global / namespace scope. Since the tests are each in their own namespace, there should be no cross-test conflicts.

llvm-svn: 262717
2016-03-04 14:25:13 +00:00
Ben Craig a6dc36f65e [libcxxabi] Make test tolerant of uncommon floating literal demanglings
libcxxabi uses the C99 library's %a format specifier to turn a floating
point value into a hexadecimal string representation. The %a format
specifier is rather loosely defined in the C spec though, and some C
libraries emit a different (but valid) string for a given floating
point value. In particular, the C spec only requires that there is a
single, non-zero hexadecimal digit on the left of the decimal point.
Given that constraint, there are typically four different valid 
representations of a floating point number. I have updated the test to
accept any of the valid representations for demangled floating
point literals.

llvm-svn: 258311
2016-01-20 14:03:27 +00:00
Eric Fiselier 3f7c20747d Mark some tests as XFAIL with GCC due to compiler bugs
llvm-svn: 258284
2016-01-20 04:06:46 +00:00
Eric Fiselier 203655a936 Fix link flags order in RUN command.
llvm-svn: 258277
2016-01-20 03:04:50 +00:00
Eric Fiselier 6f630f800b Recommit r256322: Fix PR25898 - Check for incomplete pointers types in can_catch(...)
This patch re-commits r256322 and r256323. They were reverted due to a OS X
test failure. The test failure has been fixed by libc++ commit r258217.

This patch also adds some additional tests.

llvm-svn: 258249
2016-01-19 23:42:10 +00:00
Eric Fiselier 58ad9b19cc Add missing license headers
llvm-svn: 258201
2016-01-19 22:07:10 +00:00
Nico Weber 6977ee7f4c Revert r256322 (and follow-up 256323), the test it added does not pass on OS X.
llvm-svn: 257896
2016-01-15 15:44:14 +00:00
Eric Fiselier dfe216dba8 Add new tests for throwing incomplete pointer types
llvm-svn: 256323
2015-12-23 07:04:32 +00:00
Eric Fiselier 88b26886b2 Fix PR25898 - Check for incomplete pointers types in can_catch(...)
llvm-svn: 256322
2015-12-23 06:35:25 +00:00
Eric Fiselier 3cf3cfc4c5 Fix LIBCXXABI_HAS_NO_THREADS configuration.
llvm-svn: 250316
2015-10-14 19:21:38 +00:00
Eric Fiselier 035ddc2046 Configure for config site header
llvm-svn: 250313
2015-10-14 19:01:47 +00:00
Eric Fiselier 453da19d2d Add config.project_obj_root to the libc++abi testsuite
llvm-svn: 250307
2015-10-14 18:20:48 +00:00
Marshall Clow 8ebfb60efa Fix Bug 25103 - _cxa_demangle improperly demangles virtual thunks. Thanks to Jason King for the report and suggested fix
llvm-svn: 250097
2015-10-12 20:45:05 +00:00
Marshall Clow a552480298 Fix incorrect parsing of arguments for nested functions. Reviewed as http://reviews.llvm.org/D13192. Thanks to Anseny Kapoulkine for the patch.
llvm-svn: 249649
2015-10-08 03:02:09 +00:00
Eric Fiselier 388c1a040a Convert LIBCXXABI_BUILD_32_BITS to LLVM_BUILD_32_BITS.
llvm-svn: 246516
2015-09-01 01:02:06 +00:00
Eric Fiselier c79a8f7753 Fix or disable C++11 tests in C++03 mode
llvm-svn: 245531
2015-08-20 01:22:17 +00:00
Nico Weber da99734d89 Revert r243752, it broke running tests on OS X (PR24491).
llvm-svn: 245325
2015-08-18 18:29:33 +00:00
Renato Golin 9e737939fb [libc++abi] Allow use just compiled clang++ for tests
Currently, the tests assume the system compiler is the one we want
to test, but if we build libcxxabi together with LLVM+Clang, it'll
get the wrong compiler.

This patch allows us to test if we have clang++ in our /bin directory,
and if so, use it.

llvm-svn: 243752
2015-07-31 15:25:11 +00:00
Daniel Sanders 83934d3915 [libcxxabi] Add -funwind-tables to the test compilation options.
Summary:
backtrace_test.pass.cpp depends on unwind tables. These are generated by
-funwind-tables which is the default for x86 but not for other targets.

Thanks to Nitesh Jain for helping to narrow this down.

Fixes PR24148

Reviewers: jroelofs

Subscribers: cfe-commits, jroelofs, llvm-commits, hans

Differential Revision: http://reviews.llvm.org/D11529

llvm-svn: 243296
2015-07-27 18:20:17 +00:00
Marshall Clow 604de5c256 Implement uncaught_exceptions() to get a count, rather than a bool. Update the libc++abi version. Reviewed as http://reviews.llvm.org/D10067
llvm-svn: 238827
2015-06-02 13:03:17 +00:00
Eric Fiselier 65ace9daa3 Disallow conversions from function pointers to void*.
Function pointers and member function pointers cannot be converted to void*.
libc++abi incorrectly allows this conversion for function pointers.

Review URL: http://reviews.llvm.org/D8811

llvm-svn: 236299
2015-05-01 01:49:37 +00:00
Saleem Abdulrasool ac18e0639f libc++abi: move tests back
These are apparently related to libc++'s unwind personality handler and not
unwind core.  Move them back to the correct location.

llvm-svn: 235765
2015-04-24 20:20:54 +00:00
Saleem Abdulrasool a01b1afad4 libc++abi: remove the duplicated unwind content
The unwinder has been moved into its own project setup at
http://svn.llvm.org/projects/libunwind/trunk.  This simply removes the now
duplicated content.  This move was previously discussed on llvmdev at [1].

[1] http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-January/081507.html

llvm-svn: 235759
2015-04-24 19:40:31 +00:00
Eric Fiselier b6030b9dbf [libcxxabi] Disallow Base to Derived conversions for catching pointers to members.
Summary:
I accidentally implemented the 4.11 [conv.mem] conversions for libc++abi in a recent patch. @majnemer pointed out that 5.13 [except.handle] only allows the pointer conversions in 4.10 and not those is 4.11. This patch no longer allows the following example code:

```c++
struct A {};
struct B : public A {};

int main() {
  try {
    throw (int A::*)0;
  } catch (int B::*) {
    // exception caught here.
  }
}
```

Reviewers: mclow.lists, jroelofs, majnemer

Reviewed By: majnemer

Subscribers: majnemer, cfe-commits

Differential Revision: http://reviews.llvm.org/D8845

llvm-svn: 234254
2015-04-06 23:03:01 +00:00
Eric Fiselier 1b00fc5d81 [libcxxabi] Fix multi-level pointer conversions and pointer to member conversion detection.
Summary:
Currently there are bugs in out detection of multi-level pointer conversions and pointer to member conversions. This patch fixes the following issues.

* Allow multi-level pointers with different nested qualifiers.
* Allow multi-level mixed pointers to objects and pointers to members with different nested qualifiers.
* Allow conversions from `int Base::*` to `int Derived::*` but only for non-nested pointers.

There is still some work that needs to be done to clean this patch up but I want to get some input on it.
Open questions:

* Does `__pointer_to_member_type_info::can_catch(...)` need to adjust the pointer if a base to derived conversion is performed?


Reviewers: danalbert, compnerd, mclow.lists

Reviewed By: mclow.lists

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D8758

llvm-svn: 233984
2015-04-02 23:26:37 +00:00
Eric Fiselier cf74f5d20b Let libc++'s LIT configuration setup our linker paths and env.
llvm-svn: 232529
2015-03-17 19:45:21 +00:00
Eric Fiselier 4260252222 add option to tell LIT where to find the libc++ library when built out of tree
llvm-svn: 232518
2015-03-17 18:58:14 +00:00
Eric Fiselier 14dbeaadc1 [libcxxabi] Build both static and shared versions of libc++abi by default.
Summary:
This patch builds both static and shared versions of libc++abi by default. It adds/repurposes the following cmake options:
* `LIBCXXABI_ENABLE_SHARED`: Enable/disable building the shared library. (Previously using `OFF` would build the static library instead)
* `LIBCXXABI_ENABLE_STATIC`: Enable/disable building the static library.

This patch also re-purposes the CMake target `cxxabi` to be a meta-target for `cxxabi_shared` and `cxxabi_static`. This could potentially break other builds that depend on `cxxabi` being a library target. We will need to apply a patch to libc++'s CMake before committing this change. 

Running the tests is still only supported when the shared version is built. Support for running the tests against the static library will come in another patch.


Reviewers: jroelofs, mclow.lists, danalbert, compnerd

Reviewed By: danalbert, compnerd

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D8013

llvm-svn: 231075
2015-03-03 15:59:09 +00:00
Jonathan Roelofs 0b57fc3147 Add remote testing support to the lit config
Now that the corresponding support in libcxx has landed (r230592), adding
support here is pretty simple.

llvm-svn: 230643
2015-02-26 15:55:01 +00:00
Eric Fiselier 64cfdfea5a Add temporary workaround for missing symbol __cxa_throw_bad_new_array_length on OS X.
llvm-svn: 230125
2015-02-21 04:30:36 +00:00
Eric Fiselier 1dfbfb8c9e Fix libcxxabi's library and object root for tests.
llvm-svn: 228779
2015-02-11 01:07:48 +00:00
Eric Fiselier 879d18bf4e Make test require 'linux' instead of 'linux2'
llvm-svn: 228073
2015-02-03 23:50:47 +00:00
Eric Fiselier 753f7c306b [libcxxabi] Teach CMake better ways to find the libc++ source directory (and misc cleanup).
Summary:
The main section of this patch teaches CMake  a new option `LIBCXXABI_LIBCXX_PATH` that specifies the path to the libcxx source root. This information is passed to lit so that it can better find libc++'s python module. `LIBCXXABI_LIBCXX_PATH` is also used to help find the libc++ headers.

The rest of this patch is misc cleanup, mostly to make pep8 and pylint happy.
I've also copied libc++'s .gitignore into libc++abi.



Reviewers: jroelofs, danalbert

Reviewed By: danalbert

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D7130

llvm-svn: 226855
2015-01-22 20:00:06 +00:00
Logan Chien 957fd4d1d3 Enable backtrace_test for ARM.
llvm-svn: 226824
2015-01-22 13:40:16 +00:00
Jonathan Roelofs fcf053b342 Merge libc++abi's lit configuration with libc++'s
http://reviews.llvm.org/D6985

llvm-svn: 226737
2015-01-21 23:06:22 +00:00
Jonathan Roelofs e434b34fa3 Rename all of the tests in preparation for merging lit configs with libcxx
http://reviews.llvm.org/D7101

llvm-svn: 226691
2015-01-21 19:05:37 +00:00
Chandler Carruth 24a6b05680 [cmake/multilib] Teach libc++abi's CMake build to support multilib
libdir suffixes like 'lib64' or 'lib32'.

This support is currently very rhudimentary. We define a variable
LIBCXXABI_LIBDIR_SUFFIX. In a standalone build of libc++abi this can be
directly set as a cached variable to control the multilib suffix used.
When building libc++abi within a larger LLVM build, it is hard wired to
whatever LLVM libdir suffix has been selected. If this doesn't work for
someone, just let me know. I'm happy to change it.

Unfortunately, libc++abi's lit setup made this somewhat problematic to
change. It was setting variables up in a way that caused the resulting
build to not work with lit at all. To fix that, I've moved some
variables around in the CMake build to more closely match where and how
they are defined in the libc++ CMake build. This includes specifically
defining a library root variable in the CMake build where the libdir
suffix can be applied, and then using that rather than re-computing it
from the object directory in the lit config.

This is essentially new functionality for libc++abi so I don't expect it
to have any impact for folks until they start setting these variables.
However, I know libc++abi is built in a diverse set of environments so
just let me know if this causes you any problems.

llvm-svn: 224927
2014-12-29 12:22:04 +00:00
Dan Albert 12c0c8b67f [libcxxabi] Add __cxa_thread_atexit for TLS support on Linux.
Summary:
Fixes PR21738.

The implementation for this is handled by __cxa_thread_atexit_impl,
which is supplied by libc.

More information:
https://sourceware.org/glibc/wiki/Destructor%20support%20for%20thread_local%20variables

Reviewers: mclow.lists, EricWF, jroelofs

Reviewed By: jroelofs

Subscribers: majnemer, cfe-commits

Differential Revision: http://reviews.llvm.org/D6708

llvm-svn: 224477
2014-12-18 00:03:57 +00:00
Justin Bogner 035b964d72 Use the newer python syntax for exceptions
We've dropped support for python 2.5, so now we can use the forward
compatible "except ... as" syntax.

llvm-svn: 224182
2014-12-13 02:49:27 +00:00
Eric Fiselier eae1b6a6d7 Fix comment on end of #endif to match #if
llvm-svn: 222719
2014-11-25 03:19:02 +00:00
Eric Fiselier 17b1568fc4 Use lit.util.executeCommand instead of our own version
llvm-svn: 222718
2014-11-25 03:06:31 +00:00