aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-10-03 12:50:46 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2016-10-03 12:50:46 +0100
commit6a0d23af49e16577418566ab4fb165fea2efe286 (patch)
tree00f6965a3a89bc05af5c114be662848901442b64 /libstdc++-v3
parent3fe2ddae4b15a17184237097a5c9363eb94fe99a (diff)
downloadgcc-6a0d23af49e16577418566ab4fb165fea2efe286.zip
gcc-6a0d23af49e16577418566ab4fb165fea2efe286.tar.gz
gcc-6a0d23af49e16577418566ab4fb165fea2efe286.tar.bz2
Ensure "C++" language linkage for std::abs overloads
PR libstdc++/77814 * include/bits/std_abs.h: Use "C++" language linkage. * testsuite/17_intro/headers/c++2011/linkage.cc: Move <complex.h> to the end. Add <stdalign.h>. From-SVN: r240710
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/include/bits/std_abs.h3
-rw-r--r--libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc13
3 files changed, 20 insertions, 3 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 31dfa65..8c74435 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2016-10-03 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/77814
+ * include/bits/std_abs.h: Use "C++" language linkage.
+ * testsuite/17_intro/headers/c++2011/linkage.cc: Move <complex.h> to
+ the end. Add <stdalign.h>.
+
2016-10-03 Ville Voutilainen <ville.voutilainen@gmail.com>
PR libstdc++/77802
diff --git a/libstdc++-v3/include/bits/std_abs.h b/libstdc++-v3/include/bits/std_abs.h
index ab0f980..732b81a3 100644
--- a/libstdc++-v3/include/bits/std_abs.h
+++ b/libstdc++-v3/include/bits/std_abs.h
@@ -43,6 +43,8 @@
#undef abs
+extern "C++"
+{
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -103,5 +105,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
+}
#endif // _GLIBCXX_BITS_STD_ABS_H
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc
index 67c384b..bb56dbf 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc
@@ -25,9 +25,7 @@
extern "C"
{
#include <assert.h>
-#ifdef _GLIBCXX_HAVE_COMPLEX_H
-#include <complex.h>
-#endif
+// See below for <complex.h>
#include <ctype.h>
#include <errno.h>
#ifdef _GLIBCXX_HAVE_FENV_H
@@ -43,6 +41,9 @@ extern "C"
#include <math.h>
#include <setjmp.h>
#include <signal.h>
+#if _GLIBCXX_HAVE_STDALIGN_H
+#include <stdalign.h>
+#endif
#include <stdarg.h>
#ifdef _GLIBCXX_HAVE_STDBOOL_H
#include <stdbool.h>
@@ -67,4 +68,10 @@ extern "C"
#ifdef _GLIBCXX_HAVE_WCTYPE_H
#include <wctype.h>
#endif
+
+// Include this last, because it adds extern "C++" and so hides problems in
+// other headers if included first (e.g. PR libstdc++/77814).
+#ifdef _GLIBCXX_HAVE_COMPLEX_H
+#include <complex.h>
+#endif
}