diff options
author | Loren J. Rittle <ljrittle@acm.org> | 2003-04-18 09:53:58 +0000 |
---|---|---|
committer | Loren J. Rittle <ljrittle@gcc.gnu.org> | 2003-04-18 09:53:58 +0000 |
commit | 9c594837086fc3e80adfa989de0a494391ff39a6 (patch) | |
tree | 0c5238f50226beeb4ebca7e5a0120a5db7fac2b9 | |
parent | c04ec67ecdbf019e1f3bb43846441d4dfa5c3732 (diff) | |
download | gcc-9c594837086fc3e80adfa989de0a494391ff39a6.zip gcc-9c594837086fc3e80adfa989de0a494391ff39a6.tar.gz gcc-9c594837086fc3e80adfa989de0a494391ff39a6.tar.bz2 |
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
-rw-r--r-- | libstdc++-v3/ChangeLog | 13 | ||||
-rw-r--r-- | libstdc++-v3/config/os/bsd/freebsd/os_defines.h | 4 | ||||
-rw-r--r-- | libstdc++-v3/docs/html/17_intro/porting.texi | 22 | ||||
-rw-r--r-- | libstdc++-v3/include/c_std/std_cstdio.h | 15 | ||||
-rw-r--r-- | libstdc++-v3/include/c_std/std_cstdlib.h | 26 | ||||
-rw-r--r-- | libstdc++-v3/include/c_std/std_cwchar.h | 16 |
6 files changed, 92 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0237c4a..8cba854 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -3,6 +3,19 @@ * include/c_std/std_cmath.h (C99 FP capture): Only undefine said 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> PR libstdc++/9555 diff --git a/libstdc++-v3/config/os/bsd/freebsd/os_defines.h b/libstdc++-v3/config/os/bsd/freebsd/os_defines.h index 806add6..55040a7 100644 --- a/libstdc++-v3/config/os/bsd/freebsd/os_defines.h +++ b/libstdc++-v3/config/os/bsd/freebsd/os_defines.h @@ -34,6 +34,10 @@ // System-specific #define, typedefs, corrections, etc, go here. This // 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_DYNAMIC defined _XOPEN_SOURCE diff --git a/libstdc++-v3/docs/html/17_intro/porting.texi b/libstdc++-v3/docs/html/17_intro/porting.texi index bafa62d..6f3618c 100644 --- a/libstdc++-v3/docs/html/17_intro/porting.texi +++ b/libstdc++-v3/docs/html/17_intro/porting.texi @@ -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 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 expression that yields 0 if and only if the system headers are exposing proper support for the related set of macros. If defined, diff --git a/libstdc++-v3/include/c_std/std_cstdio.h b/libstdc++-v3/include/c_std/std_cstdio.h index 6fb8c79..3b4a685 100644 --- a/libstdc++-v3/include/c_std/std_cstdio.h +++ b/libstdc++-v3/include/c_std/std_cstdio.h @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -152,11 +152,24 @@ namespace std 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 ::vfscanf; using ::vscanf; using ::vsnprintf; using ::vsscanf; +#endif } namespace std diff --git a/libstdc++-v3/include/c_std/std_cstdlib.h b/libstdc++-v3/include/c_std/std_cstdlib.h index 70fc8d3..e1436be 100644 --- a/libstdc++-v3/include/c_std/std_cstdlib.h +++ b/libstdc++-v3/include/c_std/std_cstdlib.h @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -135,8 +135,15 @@ namespace std namespace __gnu_cxx { +#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC 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; +#endif inline long long abs(long long __x) { return __x >= 0 ? __x : -__x; } @@ -144,6 +151,7 @@ namespace __gnu_cxx inline long long llabs(long long __x) { return __x >= 0 ? __x : -__x; } +#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC inline lldiv_t div(long long __n, long long __d) { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } @@ -151,22 +159,36 @@ namespace __gnu_cxx inline lldiv_t lldiv(long long __n, long long __d) { 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 ::strtof; using ::strtoll; using ::strtoull; +#endif + using ::strtof; using ::strtold; } namespace std { +#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC using __gnu_cxx::lldiv_t; +#endif using __gnu_cxx::_Exit; using __gnu_cxx::abs; using __gnu_cxx::llabs; +#if !_GLIBCPP_USE_C99_LONG_LONG_DYNAMIC using __gnu_cxx::div; using __gnu_cxx::lldiv; +#endif using __gnu_cxx::atoll; using __gnu_cxx::strtof; using __gnu_cxx::strtoll; diff --git a/libstdc++-v3/include/c_std/std_cwchar.h b/libstdc++-v3/include/c_std/std_cwchar.h index f67f006..8b33c52 100644 --- a/libstdc++-v3/include/c_std/std_cwchar.h +++ b/libstdc++-v3/include/c_std/std_cwchar.h @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -225,9 +225,23 @@ namespace std 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; +#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 ::wcstoull; +#endif } namespace std |