On 2019-08-06 22:59, Marshall Clow wrote: > Many of the failing libc++ tests are explicitly XFAILed for NetBSD; I wonder > if they should also be for FreeBSD.
If they can't be fixed, then indeed they should be XFAILed. But maybe not
right away, see below.
> libcxx/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
> I don't know about this one.
Apparently it slept for too long:
Assertion failed: (std::abs(ns.count()) < err.count()), function main, file
/home/dim/llvm/9.0.0/rc1/llvm.src/projects/libcxx/test/libcxx/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp,
line 68.
Cause is unknown.
> libc++ :: std/language.support/support.runtime/ctime.pass.cpp
> Does your C library have "timespec_get" ?
Yes, but it got introduced only in FreeBSD 12.0. I ran the tests on FreeBSD
11.3, where it got:
/home/dim/llvm/9.0.0/rc1/llvm.src/projects/libcxx/test/std/language.support/support.runtime/ctime.pass.cpp:25:2:
error: TIME_UTC not defined
This could be worked around by checking the FreeBSD major version, using e.g.
"#if __FreeBSD__ >= 12".
> libc++ ::
>
> std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
For this particular test, FreeBSD, Linux and Windows seem to have a different
opinion than macOS on the result of std::strcoll("aaaaaaA", "BaaaaaA"), when
the locale is en_US.UTF-8:
* macOS 10.14 gives 31
* FreeBSD 13.0 gives -13
* Linux (Ubuntu 18.04) gives -1
* Windows 10 (VS 2017) gives -1
E.g. macOS, which the test appears to be based on, is the odd one out here. :)
I won't pretend to fully understand the Unicode collation rules, but it could
be that macOS does a case insensitive comparison, while the other systems do a
case sensitive comparison.
> libc++ ::
>
> std/localization/locale.categories/category.collate/locale.collate.byname/transform.pass.cpp
This test failed because it segfaults on FreeBSD, due to a bug in our
wcsxfrm_l(3). :-)
I have fixed the bug in FreeBSD 13 here:
https://svnweb.freebsd.org/changeset/base/350697, but it may take a while
before it is merged into FreeBSD 12 and 11.
> These contain:
> // NetBSD does not support LC_COLLATE at the moment
> // XFAIL: netbsd
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.moneypunct.byname/grouping.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.moneypunct.byname/neg_format.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.moneypunct.byname/pos_format.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp
> These contain:
> // NetBSD does not support LC_MONETARY at the moment
> // XFAIL: netbsd
> libc++ ::
>
> std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp
> These contain:
> // NetBSD does not support LC_TIME at the moment
> // XFAIL: netbsd
> libc++ ::
>
> std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp
> libc++ ::
>
> std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp
> These contain:
> // NetBSD does not support LC_NUMERIC at the moment
> // XFAIL: netbsd
> libc++ :: std/re/re.alg/re.alg.match/awk.pass.cpp
> libc++ :: std/re/re.alg/re.alg.match/basic.pass.cpp
> libc++ :: std/re/re.alg/re.alg.match/ecma.pass.cpp
> libc++ :: std/re/re.alg/re.alg.match/extended.pass.cpp
> libc++ :: std/re/re.alg/re.alg.search/awk.pass.cpp
> libc++ :: std/re/re.alg/re.alg.search/basic.pass.cpp
> libc++ :: std/re/re.alg/re.alg.search/ecma.pass.cpp
> libc++ :: std/re/re.alg/re.alg.search/extended.pass.cpp
> libc++ :: std/re/re.traits/lookup_collatename.pass.cpp
> libc++ :: std/re/re.traits/transform_primary.pass.cpp
> These contain:
> // NetBSD does not support LC_COLLATE at the moment
> // XFAIL: netbsd
> Is this also a problem for FREEBSD?
FreeBSD does support all the LC_xxx functionality, but it could very well be
that the output of the above tests is slightly different from what is expected.
I will have to look into all the individual cases to see what is going wrong.
> libc++ :: std/utilities/time/date.time/ctime.pass.cpp
> Does your C library have "timespec_get" ?
See above, from FreeBSD 12 onwards.
-Dimitry
signature.asc
Description: Message signed with OpenPGP
_______________________________________________ lldb-dev mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
