diff options
Diffstat (limited to 'main/musl/0018-don-t-shadow-functions-with-macros-in-C.patch')
-rw-r--r-- | main/musl/0018-don-t-shadow-functions-with-macros-in-C.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/main/musl/0018-don-t-shadow-functions-with-macros-in-C.patch b/main/musl/0018-don-t-shadow-functions-with-macros-in-C.patch new file mode 100644 index 0000000000..1078ec32cf --- /dev/null +++ b/main/musl/0018-don-t-shadow-functions-with-macros-in-C.patch @@ -0,0 +1,69 @@ +From f164875a84c35d0e0d132f99330d3fcda76ee7aa Mon Sep 17 00:00:00 2001 +From: Bobby Bingham <koorogi@koorogi.info> +Date: Mon, 8 Dec 2014 20:18:12 -0600 +Subject: [PATCH] don't shadow functions with macros in C++ + +C++ programmers typically expect something like "::function(x,y)" to work +and may be surprised to find that "(::function)(x,y)" is actually required +due to the headers declaring a macro version of some standard functions. + +We already omit function-like macros for C++ in most cases where there is +a real function available. This commit extends this to the remaining +function-like macros which have a real function version. +--- + include/complex.h | 2 ++ + include/pthread.h | 2 ++ + include/threads.h | 2 ++ + 3 files changed, 6 insertions(+) + +diff --git a/include/complex.h b/include/complex.h +index 13a45c5..e1af0d5 100644 +--- a/include/complex.h ++++ b/include/complex.h +@@ -101,6 +101,7 @@ double creal(double complex); + float crealf(float complex); + long double creall(long double complex); + ++#ifndef __cplusplus + #define __CIMAG(x, t) \ + ((union { _Complex t __z; t __xy[2]; }){(_Complex t)(x)}.__xy[1]) + +@@ -111,6 +112,7 @@ long double creall(long double complex); + #define cimag(x) __CIMAG(x, double) + #define cimagf(x) __CIMAG(x, float) + #define cimagl(x) __CIMAG(x, long double) ++#endif + + #define __CMPLX(x, y, t) \ + ((union { _Complex t __z; t __xy[2]; }){.__xy = {(x),(y)}}.__z) +diff --git a/include/pthread.h b/include/pthread.h +index f7c9568..2697e8b 100644 +--- a/include/pthread.h ++++ b/include/pthread.h +@@ -84,7 +84,9 @@ __attribute__((const)) + pthread_t pthread_self(void); + + int pthread_equal(pthread_t, pthread_t); ++#ifndef __cplusplus + #define pthread_equal(x,y) ((x)==(y)) ++#endif + + int pthread_setcancelstate(int, int *); + int pthread_setcanceltype(int, int *); +diff --git a/include/threads.h b/include/threads.h +index 0e5836c..0179482 100644 +--- a/include/threads.h ++++ b/include/threads.h +@@ -51,7 +51,9 @@ void thrd_yield(void); + + thrd_t thrd_current(void); + int thrd_equal(thrd_t, thrd_t); ++#ifndef __cplusplus + #define thrd_equal(A, B) ((A) == (B)) ++#endif + + void call_once(once_flag *, void (*)(void)); + +-- +2.2.0 + |