This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[patch] libstdc++/69581 Don't define guard macros when doing #include_next in math.h and stdlib.h
- From: Jonathan Wakely <jwakely at redhat dot com>
- To: libstdc++ at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Mon, 1 Feb 2016 11:24:03 +0000
- Subject: [patch] libstdc++/69581 Don't define guard macros when doing #include_next in math.h and stdlib.h
- Authentication-results: sourceware.org; auth=none
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 <jwakely@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.edlinger@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