Ensure C++ language linkage in cmath and cstdlib

PR libstdc++/69386
	* include/c_global/ccomplex: Ensure C++ language linkage.
	* include/c_global/cmath: Likewise.
	* include/c_global/cstdlib: Likewise.
	* include/c_global/ctgmath: Likewise.
	* testsuite/17_intro/headers/c++2011/linkage.cc: New.

From-SVN: r232607
This commit is contained in:
Jonathan Wakely 2016-01-20 12:34:25 +00:00 committed by Jonathan Wakely
parent 825da0d20f
commit eac437bf2c
6 changed files with 71 additions and 0 deletions

View File

@ -1,3 +1,12 @@
2016-01-20 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/69386
* include/c_global/ccomplex: Ensure C++ language linkage.
* include/c_global/cmath: Likewise.
* include/c_global/cstdlib: Likewise.
* include/c_global/ctgmath: Likewise.
* testsuite/17_intro/headers/c++2011/linkage.cc: New.
2016-01-19 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/14608

View File

@ -35,6 +35,8 @@
# include <bits/c++0x_warning.h>
#endif
extern "C++" {
#include <complex>
}
#endif

View File

@ -74,6 +74,8 @@
#undef tan
#undef tanh
extern "C++"
{
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
@ -1790,4 +1792,6 @@ _GLIBCXX_END_NAMESPACE_VERSION
# include <bits/specfun.h>
#endif
} // extern "C++"
#endif

View File

@ -115,6 +115,8 @@ namespace std
#undef wcstombs
#undef wctomb
extern "C++"
{
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
@ -272,6 +274,8 @@ namespace std
#endif // _GLIBCXX_USE_C99_STDLIB
} // extern "C++"
#endif // !_GLIBCXX_HOSTED
#endif

View File

@ -35,7 +35,9 @@
# include <bits/c++0x_warning.h>
#else
# include <cmath>
extern "C++" {
# include <complex>
}
#endif
#endif

View File

@ -0,0 +1,50 @@
// Copyright (C) 2016 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
// { dg-options "-std=gnu++11" }
// { dg-do compile }
// libstdc++/69386
extern "C"
{
#include <assert.h>
#include <complex.h>
#include <ctype.h>
#include <errno.h>
#include <fenv.h>
#include <float.h>
#include <inttypes.h>
#include <iso646.h>
#include <limits.h>
#include <locale.h>
#include <math.h>
#include <setjmp.h>
#include <signal.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <tgmath.h>
#include <time.h>
#include <uchar.h>
#include <wchar.h>
#include <wctype.h>
}