The new <math.h> and <stdlib.h> wrapper headers should not define their guard macros when being included in "pass-through" mode, i.e. when _GLIBCXX_INCLUDE_NEXT_C_HEADERS is defined. This patch allows the wrapper to pass-through as many layers of wrapper headers as needed until the real C library header is found.
Tested powerpc64-linux, committed to trunk.
commit c501dcd83400039b74f79f338580f25e148556ac Author: Jonathan Wakely <jwak...@redhat.com> Date: Mon Feb 1 10:53:35 2016 +0000 Don't define guard macros when doing #include_next in math.h and stdlib.h 2016-02-01 Bernd Edlinger <bernd.edlin...@hotmail.de> PR libstdc++/69581 * include/c_compatibility/math.h: Move header guards. * include/c_compatibility/stdlib.h: Likewise. diff --git a/libstdc++-v3/include/c_compatibility/math.h b/libstdc++-v3/include/c_compatibility/math.h index 243e631..1f579ee 100644 --- a/libstdc++-v3/include/c_compatibility/math.h +++ b/libstdc++-v3/include/c_compatibility/math.h @@ -26,13 +26,13 @@ * This is a Standard C++ Library header. */ +#if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS +# include_next <math.h> +#else #ifndef _GLIBCXX_MATH_H #define _GLIBCXX_MATH_H 1 -#if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS -# include_next <math.h> -#else # include <cmath> using std::abs; @@ -177,7 +177,5 @@ using std::sph_neumannl; using std::sph_neumann; #endif // __STDCPP_WANT_MATH_SPEC_FUNCS__ -#endif // __cplusplus - #endif // _GLIBCXX_MATH_H - +#endif // __cplusplus diff --git a/libstdc++-v3/include/c_compatibility/stdlib.h b/libstdc++-v3/include/c_compatibility/stdlib.h index 31e7e5f..747ad76 100644 --- a/libstdc++-v3/include/c_compatibility/stdlib.h +++ b/libstdc++-v3/include/c_compatibility/stdlib.h @@ -26,12 +26,13 @@ * This is a Standard C++ Library header. */ -#ifndef _GLIBCXX_STDLIB_H -#define _GLIBCXX_STDLIB_H 1 - #if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS # include_next <stdlib.h> #else + +#ifndef _GLIBCXX_STDLIB_H +#define _GLIBCXX_STDLIB_H 1 + # include <cstdlib> using std::abort; @@ -81,5 +82,5 @@ using std::wctomb; #endif // _GLIBCXX_USE_WCHAR_T #endif -#endif -#endif +#endif // _GLIBCXX_STDLIB_H +#endif // __cplusplus