porting.texi (_GLIBCPP_USE_C99_CHECK): New macro.
authorLoren J. Rittle <ljrittle@acm.org>
Fri, 18 Apr 2003 09:53:58 +0000 (09:53 +0000)
committerLoren J. Rittle <ljrittle@gcc.gnu.org>
Fri, 18 Apr 2003 09:53:58 +0000 (09:53 +0000)
* 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

libstdc++-v3/ChangeLog
libstdc++-v3/config/os/bsd/freebsd/os_defines.h
libstdc++-v3/docs/html/17_intro/porting.texi
libstdc++-v3/include/c_std/std_cstdio.h
libstdc++-v3/include/c_std/std_cstdlib.h
libstdc++-v3/include/c_std/std_cwchar.h

index 0237c4a421c0e3ee2cdb4760d280e90f4ec1922a..8cba854cc5e3e6161d6670750ce17b0661fd4650 100644 (file)
@@ -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
index 806add6a154ac695884faa14e7f825d9ae784c34..55040a7ac4b9c020badebad4517ad050ba5f7020 100644 (file)
 // 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
 
index bafa62d1d19356964ae2650461b8dbb8f85ee35e..6f3618c637d57ec872ec55bdc397a2335f9f2b88 100644 (file)
@@ -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,
index 6fb8c79fb3d72220b6ddaa5df9baa7cf00592e16..3b4a6856739690f5286a31b1828731dca07ad0be 100644 (file)
@@ -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
index 70fc8d3452e4ef8de2b7b798906bee1d52f05686..e1436be1d7a17ef97d9636372c43910d25404049 100644 (file)
@@ -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;
index f67f00610f507db644f593db8928247588483b60..8b33c52282f1476131f8f637ea71248f10673cf5 100644 (file)
@@ -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