(_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
* 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
// 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
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,
// -*- 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
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
// -*- 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
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; }
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; }
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;
// -*- 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
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