Linux has a lot of failures caused by not having support for certain
locales. Since these come out as a lot of noise in the test results,
have lit.cfg detect the presence of the various locales used in the
tests and add them to config.available_features as locale.LOCALE_NAME.
This patch also adds REQUIRES: locale.REQUIRED_LOCALE to every test that
I saw failing in this manner. We probably need to add more for all the
tests requiring en_US.UTF-8, but we can do that on an as-needed basis.
One thing that concerns me is how many tests get skipped because of
missing locales (especially in regex/). We should make a point of
splitting up any tests that test default behavior _and_ behavior under a
given locale so that we aren't losing coverage for default behavior.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214753 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit b4ed5ca01e)
Change-Id: I927e18139449dcc74abcca63aaf72e7b2c8c4a25
Android can't use ctype_base::mask for its char_class_type because the
bionic ctype implementation comes from openbsd, which uses an 8-bit
ctype mask which isn't large enough to encode the standard ctypes and
__regex_word.
Change-Id: Iee4b8dd465ff2cb358ed2b10e1c3a499437403b7
Keeping the regex code sane is much easier if we match the other
platforms and use an unsigned mask.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214442 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit 3ab406107d)
Change-Id: If15df5f68783a23cbfc60075355f8481d60c11db
__get_classname() and __bracket_expression were assuming that
char_class_type was ctype_base::mask rather than using
regex_traits<_CharT>::char_class_type.
This change allows char_class_type to be defined to something other than
ctype_base::mask so that the implementation will still work for
platforms with an 8-bit ctype mask (such as Android and OpenBSD).
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214201 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit 1757386944)
Change-Id: I7187cba000d6cafbe02b1ea5026f968542a909b2
The maximum alignment on arm is 8, not 16 like on x86. Use alignof(max_align_t)
to make the test work in both cases.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@210195 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit 8f62279382)
[syserr.errcat.objects]p4 specifies that
system_category().default_error_condition(ev) map to
error_condition(posv, generic_category()) if ev could map to a POSIX
errno.
Linux reserves up to and including 4095 for errno values, use this as a
bound.
This fixes syserr.errcat.objects/system_category.pass.cpp on Linux.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@209795 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit 0f5a5124d2)
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
(cherry picked from commit d1ab521199)
Some of the new/modified tests explicitly check things about virtual
classes with non-virtual destructors.
Change-Id: Ibd79700a2d4040b1871149035a8ca9eb81ab220c
The maximum alignment on arm is 8, not 16 like on x86. Use alignof(max_align_t)
to make the test work in both cases.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@210195 91177308-0d34-0410-b5e6-96231b3b80d8
[syserr.errcat.objects]p4 specifies that
system_category().default_error_condition(ev) map to
error_condition(posv, generic_category()) if ev could map to a POSIX
errno.
Linux reserves up to and including 4095 for errno values, use this as a
bound.
This fixes syserr.errcat.objects/system_category.pass.cpp on Linux.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@209795 91177308-0d34-0410-b5e6-96231b3b80d8
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