diff --git a/libcxx/test/std/time/time.zone/time.zone.timezone/time.zone.members/sys_info.zdump.pass.cpp b/libcxx/test/std/time/time.zone/time.zone.timezone/time.zone.members/sys_info.zdump.pass.cpp index 2b97d9a5bc745..6af236ff007cb 100644 --- a/libcxx/test/std/time/time.zone/time.zone.timezone/time.zone.members/sys_info.zdump.pass.cpp +++ b/libcxx/test/std/time/time.zone/time.zone.timezone/time.zone.members/sys_info.zdump.pass.cpp @@ -7,15 +7,12 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14, c++17 -// UNSUPPORTED: no-filesystem, no-localization, no-tzdb, has-no-zdump +// UNSUPPORTED: no-filesystem, no-localization, no-tzdb, has-no-zdump, zdump-time_t-32bit // REQUIRES: long_tests // XFAIL: libcpp-has-no-experimental-tzdb // XFAIL: availability-tzdb-missing -// TODO TZDB Investigate -// UNSUPPORTED: target={{armv(7|8)l-linux-gnueabihf}} - #include #include #include diff --git a/libcxx/utils/libcxx/test/features.py b/libcxx/utils/libcxx/test/features.py index 97cdb0349885d..ba2111c327883 100644 --- a/libcxx/utils/libcxx/test/features.py +++ b/libcxx/utils/libcxx/test/features.py @@ -352,6 +352,21 @@ def _mingwSupportsModules(cfg): name="has-no-zdump", when=lambda cfg: runScriptExitCode(cfg, ["zdump --version"]) != 0, ), + # zdump built with 32 bit time_t will truncate times into the 32 bit range. + # Starting with glibc 2.34, some architectures, like armhf, started building + # zdump with time_t as 64 bit which allows it to handle the maximum range. + # If zdump was built with time_t 64 bit, it will show the 1869 entries for + # this zone, which would be out of range for 32 bit. + Feature( + name="zdump-time_t-32bit", + when=lambda cfg: BooleanExpression.evaluate( + "!has-no-zdump", cfg.available_features + ) + and runScriptExitCode( + cfg, ["zdump -V -c1800,2100 Africa/Addis_Ababa | grep -q 1869"] + ) + != 0, + ), ] # Deduce and add the test features that that are implied by the #defines in