30 was chosen back when asserts() were still being compiled out. It's
far too short for some of the math tests.
Change-Id: I41ada11247bbfd7173a9b43dbe98a6d60bb19755
Now that test/lit.cfg can handle running tests on Android devices, we
can move testing over to LIT so that it's easier to stay in sync with
upstream (no longer have to run test/makemake.py to regenerate makefiles
for each test). Also, we can now actually run all of the xfail tests
(tests that are considered passing if compilation fails).
The libc++ tests can be run with:
$ mm test-libcxx # run all tests
$ mm test-libcxx-host # host only
$ mm test-libcxx-device # device only (uses current lunch target)
Actually generating the cppflags and ldflags is done in test/device.cfg.
It's a little ugly, but it does a decent job of approximating our build
system while still allowing us to finish a test run in less than 7
hours. Additional devices can be added to the config as needed.
Change-Id: Ieba38912a213c43e54e03ab9b8c4e25f019b0305
For accurate testing on Android, test compilation needs to more closely
match the Android build system. This means flipping all the switches for
-nostdlibinc, -nostdlib, etc. and instead using the libraries that were
either prebuilt or built by the system.
Android's build system isn't able to efficiently handle many small
builds run concurrently. The downside of this is that directly using the
Android build system to compile each test cannot be done in parallel,
and would take roughly 7 hours to complete a test run.
To deal with this, when config.android is true, lit.cfg will pull all of
the cppflags and ldflags right out of config instead of trying to
determine them on its own. It's dirtied a little bit by crtbegin and
crtend.
The other thing this patch does is deal with pushing the built test to
the android device, running it on the device, and removing it when done.
There are a few intricacies wrapped around `adb shell`, as adb considers
all commands that were able to be run on the device, regardless of their
exit codes, to be successful. As such, the commands are run as `adb
shell COMMAND; echo $?`, and the last line of stdout is read to
determine the real exit status.
Change-Id: I93b991c363d15d0ce0f2f3c99f7320089c6eaad5
Bug: 14296739
Updates to LLVM and libc++ have removed the remaining spurious shared text
relocations from the MIPS build of libc++. We no longer need to disable
linker warnings as errors, since we don't trigger the warning.
Change-Id: I82ec8c76decc92d93a5ce87d9a172e8cbcdb82b8
Android's ctype implementation comes from openbsd, which for some reason
doesn't consider numbers to be hex digits.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@213785 91177308-0d34-0410-b5e6-96231b3b80d8
ARM EHABI recently became available in the libc++abi unwinder, so we
finally have a solution to exception handling on ARM.
Change-Id: Id188e1debb61f09fb4ec64be9a26a08dd8de2118
compatibility to libstdc++. Move the implementation into a header for
easier sharing with libc++abi. Merge a number of improvements from that
version. Provide a POD definition for <stdexcept>'s public use to avoid
cast dances. Discussed with Marshall Clow.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@207695 91177308-0d34-0410-b5e6-96231b3b80d8
r207606 changed the __need_foo macros to behave like they do with gcc: If they
are set, _only_ the __need_foo stuff gets defined. As a consequence, cstddef
no longer defined "offsetof". It looks like the __need_foo defines aren't
needed anymore, so just remove them.
Fixes PR19723.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@208942 91177308-0d34-0410-b5e6-96231b3b80d8
wctype_t was previously declared as an enum in bionic, preventing direct integer
assignment. This has since been made more like other libc's, so we can revert
this change.
Bug: 14646243
Change-Id: Ie63711b8f6d4f947b8fe3b278f5503495521555d
math_h, cmath:
Fails a static assert because isnan(double) and isinf(double) should be
returning bool, but aren't. This is a known problem upstream.
http://libcxx.llvm.org/results.Linux.html
uchar_h, cuchar, version_cuchar:
Bionic does not include this header. According to upstream, this was also a
problem with glibc last time they ran their tests. Docs say this is fixed in
glibc 2.16. http://libcxx.llvm.org/results.Linux.html
wctype_h, cwctype:
This one isn't disabled, but did require a fix. The test was casting 0
directly to a wctype_t, which fails because bionic's wctype_t is an enum.
From the POSIX spec, it looks like bionic is allowed to do so, and this test
should be fixed upstream.
cstdio:
snprintf is a macro in bionic, which make it impossible for <cstdio> to
::using snprintf. There may be a work around for this.
quick_exit:
Bionic supports this, but glibc does not. Also becomes available in glibc
2.16. http://libcxx.llvm.org/results.Linux.html
max_align_t:
Needs investigation.
aligned_storage:
Needs investigation.
Change-Id: I62a5210f6755388dc06cce20d81530a300300bf1
To run libc++ tests:
$ mm
$ adb sync
$ python runtests.py # runs all host and device tests
# see main() for command line options
To regenerate all makefiles:
$ python makemake.py
Change-Id: Ibad78ad8e1bd45f32730d281afa53c2cec55478f