Commit a1998fab by Marc Glisse Committed by Rainer Orth

Use Solaris prototypes if possible (PR libstdc++-v3/1773)

Co-Authored-By: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>

From-SVN: r177866
parent 9181a6e5
2011-08-18 Marc Glisse <marc.glisse@normalesup.org>
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR libstdc++-v3/1773
* config/os/solaris2.7: Rename to config/os/solaris2.9.
* config/os/solaris/solaris2.9/os_defines.h
(__CORRECT_ISO_CPP_MATH_H_PROTO1)
(__CORRECT_ISO_CPP_STDLIB_H_PROTO)
(__CORRECT_ISO_CPP_STRING_H_PROTO)
(__CORRECT_ISO_CPP_WCHAR_H_PROTO): Define.
* config/os/solaris2.8/ctype_base.h,
config/os/solaris2.8/ctype_configure_char.cc,
config/solaris2.8/ctype_inline.h,
config/os/solaris2.8/os_defines.h: New files.
* configure.host (solaris2.[89], solaris2.1[0-9]):
Split into ...
(solaris2.8): ... this.
Use os/solaris/solaris2.8.
(solaris2.9, solaris2.1[0-9]): ... and this.
Use os/solaris/solaris2.9.
* include/c_global/cmath (double abs(double)): Wrap in
!__CORRECT_ISO_CPP_MATH_H_PROTO1 &&
!__CORRECT_ISO_CPP_MATH_H_PROTO2.
(float abs(float), long double abs(long double): Wrap in
!__CORRECT_ISO_CPP_MATH_H_PROTO1.
(float acos(float), long double acos(long double)): Likewise.
(float asin(float), long double asin(long double)): Likewise.
(float atan(float), long double atan(long double)): Likewise.
(float atan2(float, float), long double atan2(long double, long
double)): Likewise.
(float ceil(float), long double ceil(long double)): Likewise.
(float cos(float), long double cos(long double)): Likewise.
(float cosh(float), long double cosh(long double)): Likewise.
(float exp(float), long double exp(long double)): Likewise.
(float fabs(float), long double fabs(long double)): Likewise.
(float floor(float), long double floor(long double)): Likewise.
(float fmod(float, float), long double fmod(long double, long
double)): Likewise.
(float frexp(float, int*), long double frexp(long double, int*)):
Likewise.
(float ldexp(float, int), long double ldexp(long double, int)):
Likewise.
(float log(float), long double log(long double)): Likewise.
(float log10(float), long double log10(long double)): Likewise.
(float modf(float, float*), long double modf(long double, long
double*))): Likewise.
(float pow(float, float), long double pow(long double, long
double)): Likewise.
(float sin(float), long double sin(long double)): Likewise.
(float sinh(float), long double sinh(long double)): Likewise.
(float sqrt(float), long double sqrt(long double)): Likewise.
(float tan(float), long double tan(long double)): Likewise.
(float tanh(float), long double tanh(long double)): Likewise.
* include/c_global/cstdlib (long abs(long), ldiv_t div(long,
long)): Wrap in !__CORRECT_ISO_CPP_STDLIB_H_PROTO.
* include/tr1/cmath (float fabs(float), long double fabs(long
double)): Wrap in !__CORRECT_ISO_CPP_MATH_H_PROTO1.
2011-08-14 Benjamin Kosnik <bkoz@redhat.com>
* doc/xml/images/*: Image and image filename changes.
......
// Specific definitions for Solaris 7,8 -*- C++ -*-
// Specific definitions for Solaris 8 -*- C++ -*-
// Copyright (C) 2000, 2002, 2005, 2009 Free Software Foundation, Inc.
// Copyright (C) 2000, 2002, 2005, 2009, 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
......@@ -28,5 +28,12 @@
// System-specific #define, typedefs, corrections, etc, go here. This
// file will come before all others.
// FIXME: Autoconf if possible.
#if __cplusplus >= 199711L
#define __CORRECT_ISO_CPP_MATH_H_PROTO2
#define __CORRECT_ISO_CPP_STRING_H_PROTO
#define __CORRECT_ISO_CPP_WCHAR_H_PROTO
#endif
#endif
// Locale support -*- C++ -*-
// Copyright (C) 1997, 1998, 1999, 2000, 2003, 2009 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
//
// ISO C++ 14882: 22.1 Locales
//
// Information as gleaned from /usr/include/ctype.h. Looks like this
// only works with solaris2.7 and solaris2.8. Thanks for not changing
// things, sun engineers!
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
/// @brief Base class for ctype.
struct ctype_base
{
// Non-standard typedefs.
typedef int* __to_type;
// NB: Offsets into ctype<char>::_M_table force a particular size
// on the mask type. Because of this, we don't use an enum.
typedef unsigned int mask;
static const mask upper = _ISUPPER;
static const mask lower = _ISLOWER;
static const mask alpha = _ISALPHA;
static const mask digit = _ISDIGIT;
static const mask xdigit = _ISXDIGIT;
static const mask space = _ISSPACE;
static const mask print = _ISPRINT;
static const mask graph = _ISALPHA | _ISDIGIT | _ISPUNCT;
static const mask cntrl = _ISCNTRL;
static const mask punct = _ISPUNCT;
static const mask alnum = _ISALPHA | _ISDIGIT;
};
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
// Locale support -*- C++ -*-
// Copyright (C) 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
/** @file ctype_configure_char.cc */
//
// ISO C++ 14882: 22.1 Locales
//
#include <locale>
#include <cstdlib>
#include <cstring>
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
// Information as gleaned from /usr/include/ctype.h
const ctype_base::mask*
ctype<char>::classic_table() throw()
{ return __ctype_mask; }
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
size_t __refs)
: facet(__refs), _M_del(__table != 0 && __del),
_M_toupper(__trans_upper), _M_tolower(__trans_lower),
_M_table(__table ? __table : classic_table())
{
memset(_M_widen, 0, sizeof(_M_widen));
_M_widen_ok = 0;
memset(_M_narrow, 0, sizeof(_M_narrow));
_M_narrow_ok = 0;
}
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
: facet(__refs), _M_del(__table != 0 && __del),
_M_toupper(__trans_upper), _M_tolower(__trans_lower),
_M_table(__table ? __table : classic_table())
{
memset(_M_widen, 0, sizeof(_M_widen));
_M_widen_ok = 0;
memset(_M_narrow, 0, sizeof(_M_narrow));
_M_narrow_ok = 0;
}
char
ctype<char>::do_toupper(char __c) const
{ return _M_toupper[static_cast<unsigned char>(__c)]; }
const char*
ctype<char>::do_toupper(char* __low, const char* __high) const
{
while (__low < __high)
{
*__low = _M_toupper[static_cast<unsigned char>(*__low)];
++__low;
}
return __high;
}
char
ctype<char>::do_tolower(char __c) const
{ return _M_tolower[static_cast<unsigned char>(__c)]; }
const char*
ctype<char>::do_tolower(char* __low, const char* __high) const
{
while (__low < __high)
{
*__low = _M_tolower[static_cast<unsigned char>(*__low)];
++__low;
}
return __high;
}
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
// Locale support -*- C++ -*-
// Copyright (C) 2000, 2002, 2009, 2010 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
/** @file bits/ctype_inline.h
* This is an internal header file, included by other library headers.
* Do not attempt to use it directly. @headername{locale}
*/
//
// ISO C++ 14882: 22.1 Locales
//
// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
// functions go in ctype.cc
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
bool
ctype<char>::
is(mask __m, char __c) const
{ return _M_table[static_cast<unsigned char>(__c)] & __m; }
const char*
ctype<char>::
is(const char* __low, const char* __high, mask* __vec) const
{
while (__low < __high)
*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
return __high;
}
const char*
ctype<char>::
scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high
&& !(_M_table[static_cast<unsigned char>(*__low)] & __m))
++__low;
return __low;
}
const char*
ctype<char>::
scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high
&& (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
++__low;
return __low;
}
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
// Specific definitions for Solaris 9+ -*- C++ -*-
// Copyright (C) 2000, 2002, 2005, 2009, 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
#ifndef _GLIBCXX_OS_DEFINES
#define _GLIBCXX_OS_DEFINES 1
// System-specific #define, typedefs, corrections, etc, go here. This
// file will come before all others.
// FIXME: Autoconf if possible.
#if __cplusplus >= 199711L
#define __CORRECT_ISO_CPP_MATH_H_PROTO1
#define __CORRECT_ISO_CPP_STDLIB_H_PROTO
#define __CORRECT_ISO_CPP_STRING_H_PROTO
#define __CORRECT_ISO_CPP_WCHAR_H_PROTO
#endif
#endif
......@@ -284,8 +284,11 @@ case "${host_os}" in
echo "Please specify the full version of Solaris, ie. solaris2.9 " 1>&2
exit 1
;;
solaris2.[89] | solaris2.1[0-9])
os_include_dir="os/solaris/solaris2.7"
solaris2.8)
os_include_dir="os/solaris/solaris2.8"
;;
solaris2.9 | solaris2.1[0-9])
os_include_dir="os/solaris/solaris2.9"
;;
tpf)
os_include_dir="os/tpf"
......
// -*- C++ -*- forwarding header.
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
// 2006, 2007, 2008, 2009, 2010
// 2006, 2007, 2008, 2009, 2010, 2011
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
......@@ -135,11 +135,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
using ::wctomb;
#endif // _GLIBCXX_USE_WCHAR_T
#ifndef __CORRECT_ISO_CPP_STDLIB_H_PROTO
inline long
abs(long __i) { return labs(__i); }
inline ldiv_t
div(long __i, long __j) { return ldiv(__i, __j); }
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
......
......@@ -569,6 +569,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// mode have a different return type.
using ::fabs;
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline float
fabs(float __x)
{ return __builtin_fabsf(__x); }
......@@ -582,6 +583,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
double>::__type
fabs(_Tp __x)
{ return __builtin_fabs(__x); }
#endif
inline float
fdim(float __x, float __y)
......
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