Fix test assumption that Linux implies glibc.

Summary:
This fixes an regression when using bionic introduced in r345173.

I need to follow up and figure out what exactly is implied by
TEST_HAS_C11_FEATURES and see what the correct configuration is for
bionic (new versions should have everything the tests care about,
versions that predate C11 certainly don't), but this gets the tests
back to the old behavior.

Reviewers: EricWF

Reviewed By: EricWF

Subscribers: mclow.lists, christof, ldionne, libcxx-commits, cfe-commits

Differential Revision: https://reviews.llvm.org/D53956

llvm-svn: 345900
This commit is contained in:
Dan Albert 2018-11-01 22:35:51 +00:00
parent 27d036e995
commit d5d06a0763
1 changed files with 9 additions and 3 deletions

View File

@ -91,9 +91,11 @@
#if (defined(__has_include) && __has_include(<features.h>)) || \ #if (defined(__has_include) && __has_include(<features.h>)) || \
defined(__linux__) defined(__linux__)
#include <features.h> #include <features.h>
#if defined(__GLIBC_PREREQ)
#define TEST_HAS_GLIBC #define TEST_HAS_GLIBC
#define TEST_GLIBC_PREREQ(major, minor) __GLIBC_PREREQ(major, minor) #define TEST_GLIBC_PREREQ(major, minor) __GLIBC_PREREQ(major, minor)
#endif #endif
#endif
#if TEST_STD_VER >= 11 #if TEST_STD_VER >= 11
#define TEST_ALIGNOF(...) alignof(__VA_ARGS__) #define TEST_ALIGNOF(...) alignof(__VA_ARGS__)
@ -135,12 +137,16 @@
# define TEST_HAS_C11_FEATURES # define TEST_HAS_C11_FEATURES
# define TEST_HAS_TIMESPEC_GET # define TEST_HAS_TIMESPEC_GET
# elif defined(__linux__) # elif defined(__linux__)
# if !defined(_LIBCPP_HAS_MUSL_LIBC) // This block preserves the old behavior used by include/__config:
# if defined(TEST_GLIBC_PREREQ) && TEST_GLIBC_PREREQ(2, 17) // _LIBCPP_GLIBC_PREREQ would be defined to 0 if __GLIBC_PREREQ was not
// available. The configuration here may be too vague though, as Bionic, uClibc,
// newlib, etc may all support these features but need to be configured.
# if defined(TEST_GLIBC_PREREQ)
# if TEST_GLIBC_PREREQ(2, 17)
# define TEST_HAS_TIMESPEC_GET # define TEST_HAS_TIMESPEC_GET
# define TEST_HAS_C11_FEATURES # define TEST_HAS_C11_FEATURES
# endif # endif
# else // defined(_LIBCPP_HAS_MUSL_LIBC) # elif defined(_LIBCPP_HAS_MUSL_LIBC)
# define TEST_HAS_C11_FEATURES # define TEST_HAS_C11_FEATURES
# define TEST_HAS_TIMESPEC_GET # define TEST_HAS_TIMESPEC_GET
# endif # endif