libcxx: Stop providing a definition of __GLIBC_PREREQ.

An application may determine whether the C standard library is glibc
by testing whether __GLIBC_PREREQ is defined. This breaks if libc++
provides its own definition. Instead, define our own macro in our
namespace with the desired semantics.

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

llvm-svn: 322201
This commit is contained in:
Peter Collingbourne 2018-01-10 18:16:58 +00:00
parent b42ffa1283
commit 4566d827a1
1 changed files with 7 additions and 5 deletions

View File

@ -184,9 +184,11 @@
// Need to detect which libc we're using if we're on Linux. // Need to detect which libc we're using if we're on Linux.
#if defined(__linux__) #if defined(__linux__)
#include <features.h> #include <features.h>
#if !defined(__GLIBC_PREREQ) #if defined(__GLIBC_PREREQ)
#define __GLIBC_PREREQ(a, b) 0 #define _LIBCPP_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b)
#endif // !defined(__GLIBC_PREREQ) #else
#define _LIBCPP_GLIBC_PREREQ(a, b) 0
#endif // defined(__GLIBC_PREREQ)
#endif // defined(__linux__) #endif // defined(__linux__)
#ifdef __LITTLE_ENDIAN__ #ifdef __LITTLE_ENDIAN__
@ -416,10 +418,10 @@ typedef __char32_t char32_t;
#define _LIBCPP_HAS_C11_FEATURES #define _LIBCPP_HAS_C11_FEATURES
#elif defined(__linux__) #elif defined(__linux__)
#if !defined(_LIBCPP_HAS_MUSL_LIBC) #if !defined(_LIBCPP_HAS_MUSL_LIBC)
#if __GLIBC_PREREQ(2, 15) || defined(__BIONIC__) #if _LIBCPP_GLIBC_PREREQ(2, 15) || defined(__BIONIC__)
#define _LIBCPP_HAS_QUICK_EXIT #define _LIBCPP_HAS_QUICK_EXIT
#endif #endif
#if __GLIBC_PREREQ(2, 17) #if _LIBCPP_GLIBC_PREREQ(2, 17)
#define _LIBCPP_HAS_C11_FEATURES #define _LIBCPP_HAS_C11_FEATURES
#endif #endif
#else // defined(_LIBCPP_HAS_MUSL_LIBC) #else // defined(_LIBCPP_HAS_MUSL_LIBC)