Commit 9c594837 by Loren J. Rittle Committed by Loren J. Rittle

porting.texi (_GLIBCPP_USE_C99_CHECK): New macro.

	* docs/html/17_intro/porting.texi (_GLIBCPP_USE_C99_CHECK): New macro.
	(_GLIBCPP_USE_C99_DYNAMIC): New macro.
	(_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
	(_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
	* config/os/bsd/freebsd/os_defines.h (_GLIBCPP_USE_C99_CHECK):
	New macro.
	(_GLIBCPP_USE_C99_DYNAMIC): New macro.
	(_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
	(_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
	* include/c_std/std_cstdlib.h: Use new macros.
	* include/c_std/std_cstdio.h: Use new macros.
	* include/c_std/std_cwchar.h: Use new macros.

From-SVN: r65778
parent c04ec67e
...@@ -3,6 +3,19 @@ ...@@ -3,6 +3,19 @@
* include/c_std/std_cmath.h (C99 FP capture): Only undefine said * include/c_std/std_cmath.h (C99 FP capture): Only undefine said
C99 FP macros, if actually captured. C99 FP macros, if actually captured.
* docs/html/17_intro/porting.texi (_GLIBCPP_USE_C99_CHECK): New macro.
(_GLIBCPP_USE_C99_DYNAMIC): New macro.
(_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
(_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
* config/os/bsd/freebsd/os_defines.h (_GLIBCPP_USE_C99_CHECK):
New macro.
(_GLIBCPP_USE_C99_DYNAMIC): New macro.
(_GLIBCPP_USE_C99_LONG_LONG_CHECK): New macro.
(_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC): New macro.
* include/c_std/std_cstdlib.h: Use new macros.
* include/c_std/std_cstdio.h: Use new macros.
* include/c_std/std_cwchar.h: Use new macros.
2003-04-17 Benjamin Kosnik <bkoz@redhat.com> 2003-04-17 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/9555 PR libstdc++/9555
......
...@@ -34,6 +34,10 @@ ...@@ -34,6 +34,10 @@
// System-specific #define, typedefs, corrections, etc, go here. This // System-specific #define, typedefs, corrections, etc, go here. This
// file will come before all others. // file will come before all others.
#define _GLIBCPP_USE_C99_CHECK 1
#define _GLIBCPP_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999))
#define _GLIBCPP_USE_C99_LONG_LONG_CHECK 1
#define _GLIBCPP_USE_C99_LONG_LONG_DYNAMIC (_GLIBCPP_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED)
#define _GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1 #define _GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1
#define _GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE #define _GLIBCPP_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE
......
...@@ -156,6 +156,28 @@ port doesn't use thunks (although it is unclear that this is still ...@@ -156,6 +156,28 @@ port doesn't use thunks (although it is unclear that this is still
useful since libio support isn't currently working and the g++ v3 ABI useful since libio support isn't currently working and the g++ v3 ABI
invalidates the assumption that some ports don't use thunks). invalidates the assumption that some ports don't use thunks).
@code{_GLIBCPP_USE_C99_CHECK} may be defined to 1 to check C99
function declarations (which are not covered by specialization below)
found in system headers against versions found in the library headers
derived from the standard.
@code{_GLIBCPP_USE_C99_DYNAMIC} may be defined to an expression that
yields 0 if and only if the system headers are exposing proper support
for C99 functions (which are not covered by specialization below). If
defined, it must be 0 while bootstrapping the compiler/rebuilding the
library.
@code{_GLIBCPP_USE_C99_LONG_LONG_CHECK} may be defined to 1 to check
the set of C99 long long function declarations found in system headers
against versions found in the library headers derived from the
standard.
@code{_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC} may be defined to an
expression that yields 0 if and only if the system headers are
exposing proper support for the set of C99 long long functions. If
defined, it must be 0 while bootstrapping the compiler/rebuilding the
library.
@code{_GLIBCPP_USE_C99_FP_MACROS_DYNAMIC} may be defined to an @code{_GLIBCPP_USE_C99_FP_MACROS_DYNAMIC} may be defined to an
expression that yields 0 if and only if the system headers expression that yields 0 if and only if the system headers
are exposing proper support for the related set of macros. If defined, are exposing proper support for the related set of macros. If defined,
......
// -*- C++ -*- forwarding header. // -*- C++ -*- forwarding header.
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -152,11 +152,24 @@ namespace std ...@@ -152,11 +152,24 @@ namespace std
namespace __gnu_cxx namespace __gnu_cxx
{ {
#if _GLIBCPP_USE_C99_CHECK || _GLIBCPP_USE_C99_DYNAMIC
extern "C" int
(snprintf)(char * restrict, size_t, const char * restrict, ...);
extern "C" int
(vfscanf)(FILE * restrict, const char * restrict, __gnuc_va_list);
extern "C" int (vscanf)(const char * restrict, __gnuc_va_list);
extern "C" int
(vsnprintf)(char * restrict, size_t, const char * restrict, __gnuc_va_list);
extern "C" int
(vsscanf)(const char * restrict, const char * restrict, __gnuc_va_list);
#endif
#if !_GLIBCPP_USE_C99_DYNAMIC
using ::snprintf; using ::snprintf;
using ::vfscanf; using ::vfscanf;
using ::vscanf; using ::vscanf;
using ::vsnprintf; using ::vsnprintf;
using ::vsscanf; using ::vsscanf;
#endif
} }
namespace std namespace std
......
// -*- C++ -*- forwarding header. // -*- C++ -*- forwarding header.
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -135,8 +135,15 @@ namespace std ...@@ -135,8 +135,15 @@ namespace std
namespace __gnu_cxx namespace __gnu_cxx
{ {
#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC
using ::lldiv_t; using ::lldiv_t;
#endif
#if _GLIBCPP_USE_C99_CHECK || _GLIBCPP_USE_C99_DYNAMIC
extern "C" void (_Exit)(int);
#endif
#if !_GLIBCPP_USE_C99_DYNAMIC
using ::_Exit; using ::_Exit;
#endif
inline long long inline long long
abs(long long __x) { return __x >= 0 ? __x : -__x; } abs(long long __x) { return __x >= 0 ? __x : -__x; }
...@@ -144,6 +151,7 @@ namespace __gnu_cxx ...@@ -144,6 +151,7 @@ namespace __gnu_cxx
inline long long inline long long
llabs(long long __x) { return __x >= 0 ? __x : -__x; } llabs(long long __x) { return __x >= 0 ? __x : -__x; }
#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC
inline lldiv_t inline lldiv_t
div(long long __n, long long __d) div(long long __n, long long __d)
{ lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
...@@ -151,22 +159,36 @@ namespace __gnu_cxx ...@@ -151,22 +159,36 @@ namespace __gnu_cxx
inline lldiv_t inline lldiv_t
lldiv(long long __n, long long __d) lldiv(long long __n, long long __d)
{ lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
#endif
#if _GLIBCPP_USE_C99_LONG_LONG_CHECK || _GLIBCPP_USE_C99_LONG_LONG_DYNAMIC
extern "C" long long int (atoll)(const char *);
extern "C" long long int
(strtoll)(const char * restrict, char ** restrict, int);
extern "C" unsigned long long int
(strtoull)(const char * restrict, char ** restrict, int);
#endif
#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC
using ::atoll; using ::atoll;
using ::strtof;
using ::strtoll; using ::strtoll;
using ::strtoull; using ::strtoull;
#endif
using ::strtof;
using ::strtold; using ::strtold;
} }
namespace std namespace std
{ {
#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC
using __gnu_cxx::lldiv_t; using __gnu_cxx::lldiv_t;
#endif
using __gnu_cxx::_Exit; using __gnu_cxx::_Exit;
using __gnu_cxx::abs; using __gnu_cxx::abs;
using __gnu_cxx::llabs; using __gnu_cxx::llabs;
#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC
using __gnu_cxx::div; using __gnu_cxx::div;
using __gnu_cxx::lldiv; using __gnu_cxx::lldiv;
#endif
using __gnu_cxx::atoll; using __gnu_cxx::atoll;
using __gnu_cxx::strtof; using __gnu_cxx::strtof;
using __gnu_cxx::strtoll; using __gnu_cxx::strtoll;
......
// -*- C++ -*- forwarding header. // -*- C++ -*- forwarding header.
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -225,9 +225,23 @@ namespace std ...@@ -225,9 +225,23 @@ namespace std
namespace __gnu_cxx namespace __gnu_cxx
{ {
#if _GLIBCPP_USE_C99_CHECK || _GLIBCPP_USE_C99_DYNAMIC
extern "C" long double
(wcstold)(const wchar_t * restrict, wchar_t ** restrict);
#endif
#if !_GLIBCPP_USE_C99_DYNAMIC
using ::wcstold; using ::wcstold;
#endif
#if _GLIBCPP_USE_C99_LONG_LONG_CHECK || _GLIBCPP_USE_C99_LONG_LONG_DYNAMIC
extern "C" long long int
(wcstoll)(const wchar_t * restrict, wchar_t ** restrict, int);
extern "C" unsigned long long int
(wcstoull)(const wchar_t * restrict, wchar_t ** restrict, int);
#endif
#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC
using ::wcstoll; using ::wcstoll;
using ::wcstoull; using ::wcstoull;
#endif
} }
namespace std namespace std
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment