[libcxx] r322201 - libcxx: Stop providing a definition of __GLIBC_PREREQ.

Peter Collingbourne via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 10 10:16:58 PST 2018


Author: pcc
Date: Wed Jan 10 10:16:58 2018
New Revision: 322201

URL: http://llvm.org/viewvc/llvm-project?rev=322201&view=rev
Log:
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

Modified:
    libcxx/trunk/include/__config

Modified: libcxx/trunk/include/__config
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=322201&r1=322200&r2=322201&view=diff
==============================================================================
--- libcxx/trunk/include/__config (original)
+++ libcxx/trunk/include/__config Wed Jan 10 10:16:58 2018
@@ -184,9 +184,11 @@
 // Need to detect which libc we're using if we're on Linux.
 #if defined(__linux__)
 #include <features.h>
-#if !defined(__GLIBC_PREREQ)
-#define __GLIBC_PREREQ(a, b) 0
-#endif // !defined(__GLIBC_PREREQ)
+#if defined(__GLIBC_PREREQ)
+#define _LIBCPP_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b)
+#else
+#define _LIBCPP_GLIBC_PREREQ(a, b) 0
+#endif // defined(__GLIBC_PREREQ)
 #endif // defined(__linux__)
 
 #ifdef __LITTLE_ENDIAN__
@@ -416,10 +418,10 @@ typedef __char32_t char32_t;
 #define _LIBCPP_HAS_C11_FEATURES
 #elif defined(__linux__)
 #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
 #endif
-#if __GLIBC_PREREQ(2, 17)
+#if _LIBCPP_GLIBC_PREREQ(2, 17)
 #define _LIBCPP_HAS_C11_FEATURES
 #endif
 #else // defined(_LIBCPP_HAS_MUSL_LIBC)




More information about the cfe-commits mailing list