diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 72ee6edcf8d..3b559c516ed 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,16 @@ +2016-01-21 Jonathan Wakely + + PR libstdc++/69406 + * include/bits/cpp_type_traits.h: Ensure C++ language linkage. + * include/ext/type_traits.h: Likewise. + * testsuite/17_intro/headers/c++2011/linkage.cc: Check autoconf macros + for presence of C headers. + * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Adjust + dg-error line number. + * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise. + * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise. + * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Likewise. + 2016-01-20 Torvald Riegel PR libstdc++/69310 diff --git a/libstdc++-v3/include/bits/cpp_type_traits.h b/libstdc++-v3/include/bits/cpp_type_traits.h index 3b188d4cc80..fff1e9949d0 100644 --- a/libstdc++-v3/include/bits/cpp_type_traits.h +++ b/libstdc++-v3/include/bits/cpp_type_traits.h @@ -64,6 +64,8 @@ // removed. // +extern "C++" { + namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -408,5 +410,6 @@ __INT_N(__GLIBCXX_TYPE_INT_N_3) _GLIBCXX_END_NAMESPACE_VERSION } // namespace +} // extern "C++" #endif //_CPP_TYPE_TRAITS_H diff --git a/libstdc++-v3/include/ext/type_traits.h b/libstdc++-v3/include/ext/type_traits.h index 0a4f4255015..dd276578969 100644 --- a/libstdc++-v3/include/ext/type_traits.h +++ b/libstdc++-v3/include/ext/type_traits.h @@ -34,6 +34,8 @@ #include #include +extern "C++" { + namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -214,5 +216,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace +} // extern "C++" #endif 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 33e70535c1c..67c384b81ff 100644 --- a/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc +++ b/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc @@ -20,15 +20,23 @@ // libstdc++/69386 +#include + extern "C" { #include +#ifdef _GLIBCXX_HAVE_COMPLEX_H #include +#endif #include #include +#ifdef _GLIBCXX_HAVE_FENV_H #include +#endif #include +#ifdef _GLIBCXX_HAVE_INTTYPES_H #include +#endif #include #include #include @@ -36,15 +44,27 @@ extern "C" #include #include #include +#ifdef _GLIBCXX_HAVE_STDBOOL_H #include +#endif #include +#ifdef _GLIBCXX_HAVE_STDINT_H #include +#endif #include #include #include +#ifdef _GLIBCXX_HAVE_TGMATH_H #include +#endif #include +#if __has_include() #include +#endif +#ifdef _GLIBCXX_HAVE_WCHAR_H #include +#endif +#ifdef _GLIBCXX_HAVE_WCTYPE_H #include +#endif } diff --git a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc index f0c48d0c16c..09d2c7c41a4 100644 --- a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc +++ b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc @@ -35,4 +35,4 @@ int main() } // { dg-error "required from" "" { target *-*-* } 28 } -// { dg-error "no type" "" { target *-*-* } 69 } +// { dg-error "no type" "" { target *-*-* } 71 } diff --git a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc index cee08a39a8d..567684ee958 100644 --- a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc +++ b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc @@ -36,5 +36,5 @@ int main() } // { dg-error "invalid use of incomplete" "" { target *-*-* } 28 } -// { dg-error "declaration of" "" { target *-*-* } 98 } -// { dg-error "declaration of" "" { target *-*-* } 101 } +// { dg-error "declaration of" "" { target *-*-* } 100 } +// { dg-error "declaration of" "" { target *-*-* } 103 } diff --git a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc index 98ba8a6fdc6..c946a4f0ad6 100644 --- a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc +++ b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc @@ -35,4 +35,4 @@ int main() } // { dg-error "required from" "" { target *-*-* } 28 } -// { dg-error "no type" "" { target *-*-* } 112 } +// { dg-error "no type" "" { target *-*-* } 114 } diff --git a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc index 14e671d7a90..a2cc4c768c2 100644 --- a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc +++ b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc @@ -36,5 +36,5 @@ int main() } // { dg-error "invalid use of incomplete" "" { target *-*-* } 28 } -// { dg-error "declaration of" "" { target *-*-* } 141 } -// { dg-error "declaration of" "" { target *-*-* } 144 } +// { dg-error "declaration of" "" { target *-*-* } 143 } +// { dg-error "declaration of" "" { target *-*-* } 146 }