* docs/html/17_intro/porting.texi (_GLIBCPP_USE_C99_CHECK): New macro.
authorljrittle <ljrittle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 18 Apr 2003 09:53:58 +0000 (09:53 +0000)
committerljrittle <ljrittle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 18 Apr 2003 09:53:58 +0000 (09:53 +0000)
(_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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65778 138bc75d-0d04-0410-961f-82ee72b054a4

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 0237c4a..8cba854 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 806add6..55040a7 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 bafa62d..6f3618c 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 6fb8c79..3b4a685 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 70fc8d3..e1436be 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 f67f006..8b33c52 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