Commit Graph

59 Commits

Author SHA1 Message Date
Joseph Myers 506d7fb1d4 Do not define various fenv.h macros for MIPS soft-float (bug 23479).
MIPS soft-float glibc does not support floating-point exceptions and
rounding modes, and uses a different ABI from hard-float so a
soft-float compilation cannot use a glibc that does support
floating-point exceptions and rounding modes.  Thus, bits/fenv.h
should not, when compiling for soft-float, define macros for the
unsupported features.

This patch changes it accordingly to define those macros only for
hard-float.  None of the exception macros are defined for soft-float,
with FE_ALL_EXCEPT defined to 0 in that case, and only FE_TONEAREST is
defined of the rounding-mode macros, and FE_NOMASK_ENV is not defined;
this is consistent with how architectures lacking exception and
rounding mode support generally define things in this header.  As well
as making the header more correct for this case, this also means the
generic math_private.h optimizations for this case automatically apply
(inlining libm-internal fenv.h function calls that are trivial when
exceptions and rounding modes are not supported).

The mips64 sfp-machine.h then needs similar changes to disable more of
the exception and rounding mode handling for soft-float.  (The mips32
sfp-machine.h is already used only for soft-float, has no integration
with hardware exceptions or rounding modes and so needs no changes.)

Existing binaries might use the old FE_NOMASK_ENV value as an argument
to fesetenv / feupdateenv and expect an error for it (given that it
was defined in a header that also defined FE_ALL_EXCEPT to a nonzero
value).  To preserve that error, wrappers for the fallback fesetenv
and feupdateenv are created in sysdeps/mips/nofpu/.

Tested for mips64 (hard-float and soft-float, all three ABIs).

	[BZ #23479]
	* sysdeps/mips/bits/fenv.h (FE_INEXACT): Define only if
	[__mips_hard_float].
	(FE_UNDERFLOW): Likewise.
	(FE_OVERFLOW): Likewise.
	(FE_DIVBYZERO): Likewise.
	(FE_INVALID): Likewise.
	(FE_ALL_EXCEPT): Define to 0 if [!__mips_hard_float].
	(FE_TOWARDZERO): Define only if [__mips_hard_float].
	(FE_UPWARD): Likewise.
	(FE_DOWNWARD): Likewise.
	(__FE_UNDEFINED): Define if [!__mips_hard_float]
	(FE_NOMASK_ENV): Define only if [__mips_hard_float].
	* sysdeps/mips/mips64/sfp-machine.h (_FP_DECL_EX): Define only if
	[__mips_hard_float].
	(FP_ROUNDMODE): Likewise.
	(FP_RND_NEAREST): Likewise.
	(FP_RND_ZERO): Likewise.
	(FP_RND_PINF): Likewise.
	(FP_RND_MINF): Likewise.
	(FP_EX_INVALID): Likewise.
	(FP_EX_OVERFLOW): Likewise.
	(FP_EX_UNDERFLOW): Likewise.
	(FP_EX_DIVZERO): Likewise.
	(FP_EX_INEXACT): Likewise.
	(FP_INIT_ROUNDMODE): Likewise.
	* sysdeps/mips/nofpu/fesetenv.c: New file.
	* sysdeps/mips/nofpu/feupdateenv.c: Likewise.
2018-08-02 15:53:29 +00:00
Joseph Myers 688903eb3e Update copyright dates with scripts/update-copyrights.
* All files with FSF copyright notices: Update copyright dates
	using scripts/update-copyrights.
	* locale/programs/charmap-kw.h: Regenerated.
	* locale/programs/locfile-kw.h: Likewise.
2018-01-01 00:32:25 +00:00
Joseph Myers 37bb78cb8c Install correct bits/long-double.h for MIPS64 (bug 22322).
Similar to bug 21987 for SPARC, MIPS64 wrongly installs the ldbl-128
version of bits/long-double.h, meaning incorrect results when using
headers installed from a 64-bit installation for a 32-bit build.  (I
haven't actually seen this cause build failures before its interaction
with bits/floatn.h did so - installed headers wrongly expecting
_Float128 to be available in a 32-bit configuration.)

This patch fixes the bug by moving the MIPS header to
sysdeps/mips/ieee754, which comes before sysdeps/ieee754/ldbl-128 in
the sysdeps directory ordering.  (bits/floatn.h will need a similar
fix - duplicating the ldbl-128 version for MIPS will suffice - for
headers from a 32-bit installation to be correct for 64-bit builds.)

Tested with build-many-glibcs.py (compilers build for
mips64-linux-gnu, where there was previously a libstdc++ build failure
as at
<https://sourceware.org/ml/libc-testresults/2017-q4/msg00130.html>).

	[BZ #22322]
	* sysdeps/mips/bits/long-double.h: Move to ....
	* sysdeps/mips/ieee754/bits/long-double.h: ... here.
2017-10-19 17:32:20 +00:00
Joseph Myers c0c49d60cf Simplify NAN definitions.
Similar to my patches for HUGE_VAL and INFINITY. this patch eliminates
the bits/nan.h headers.  __builtin_nanf ("") is used to define NAN for
GCC 3.3 and later; the fallback is (0.0f / 0.0f), which is a constant
expression for a quiet NaN of type float, but raises a spurious
"invalid" exception outside static initializers, which seems the best
that can be done purely in standard C.  Again, if anyone actually uses
a compiler with its own incompatible extension for producing a
constant quiet NaN, we can add compiler conditionals.

Tested for x86_64.

	*  math/math.h [__USE_ISOC99] (NAN): Define directly here.  Do not
	include <bits/nan.h>.
	* math/Makefile (headers): Remove bits/nan.h.
	* bits/nan.h: Remove.
	* sysdeps/ieee754/bits/nan.h: Likewise.
	* sysdeps/mips/bits/nan.h: Likewise.
2017-08-31 16:39:25 +00:00
Joseph Myers f17a42333f Do not use __ptr_t.
sys/cdefs.h has a macro __ptr_t, which a few places in glibc use
instead of void *.  void * is a well-understood standard type for that
purpose and in a post-C89 context there is no need for a macro for it;
this patch changes those places to use void * directly instead.

Unlike __long_double_t, __ptr_t is widely used outside glibc (or at
least has many hits on codesearch.debian.net).  I don't know how many
of those uses would break if sys/cdefs.h ceased to define the macro,
but there's enough risk that this patch leaves the definition and just
removes the uses within glibc; removal of the definition can be
considered separately if desired.

Tested for x86_64, and with build-many-glibcs.py.

	* malloc/mcheck.c (old_free_hook): Use void * instead of __ptr_t.
	(old_malloc_hook): Likewise.
	(old_memalign_hook): Likewise.
	(old_realloc_hook): Likewise.
	(struct hdr): Likewise.
	(flood): Likewise.
	(freehook): Likewise.
	(mallochook): Likewise.
	(memalignhook): Likewise.
	(reallochook): Likewise.
	(mprobe): Likewise.
	* malloc/mtrace.c (mallwatch): Likewise.
	(tr_old_free_hook): Likewise.
	(tr_old_malloc_hook): Likewise.
	(tr_old_realloc_hook): Likewise.
	(tr_old_memalign_hook): Likewise.
	(tr_where): Likewise.
	(lock_and_info): Likewise.
	(tr_freehook): Likewise.
	(tr_mallochook): Likewise.
	(tr_reallochook): Likewise.
	(tr_memalignhook): Likewise.
	* misc/err.h [!__GNUC_VA_LIST] (__gnuc_va_list): Likewise.
	* misc/mmap.c (__mmap): Likewise.
	* misc/mmap64.c (__mmap64): Likewise.
	* misc/mprotect.c (__mprotect): Likewise.
	* misc/msync.c (msync): Likewise.
	* misc/munmap.c (__munmap): Likewise.
	* posix/posix_madvise.c (posix_madvise): Likewise.
	* socket/send.c (__send): Likewise.
	* socket/sendto.c (__sendto): Likewise.
	* socket/setsockopt.c (__setsockopt): Likewise.
	* string/memcmp.c (__ptr_t): Remove macro.
	(MEMCMP): Use void * instead of ptr_t.
	* string/memrchr.c (__ptr_t): Remove macro.
	(__memrchr): Use void * instead of ptr_t.
	* sysdeps/mach/hurd/dl-sysdep.c (__mmap): Likewise.
	* sysdeps/mach/hurd/mmap.c (__mmap): Likewise.
	* sysdeps/mach/hurd/mmap64.c (__mmap64): Likewise.
	* sysdeps/mach/mprotect.c (__mprotect): Likewise.
	* sysdeps/mach/msync.c (msync): Likewise.
	* sysdeps/mach/munmap.c (__munmap): Likewise.
	* sysdeps/mips/bits/setjmp.h (struct __jmp_buf_internal_tag):
	Likewise.
	* sysdeps/posix/getcwd.c (__getcwd): Likewise.
	* sysdeps/powerpc/powerpc32/memset.S (memset): Likewise.
	* sysdeps/powerpc/powerpc32/power4/memcpy.S (memcpy): Likewise.
	* sysdeps/powerpc/powerpc32/power4/memset.S (memset): Likewise.
	* sysdeps/powerpc/powerpc32/power6/memcpy.S (memcpy): Likewise.
	* sysdeps/powerpc/powerpc32/power6/memset.S (memset): Likewise.
	* sysdeps/powerpc/powerpc32/power7/memcpy.S (memcpy): Likewise.
	* sysdeps/powerpc/powerpc32/power7/mempcpy.S (__mempcpy):
	Likewise.
	* sysdeps/powerpc/powerpc32/power7/memset.S (memset): Likewise.
	* sysdeps/powerpc/powerpc64/memcpy.S (memcpy): Likewise.
	* sysdeps/powerpc/powerpc64/memset.S (memset): Likewise.
	* sysdeps/powerpc/powerpc64/power4/memcpy.S (memcpy): Likewise.
	* sysdeps/powerpc/powerpc64/power4/memset.S (memset): Likewise.
	* sysdeps/powerpc/powerpc64/power6/memcpy.S (memcpy): Likewise.
	* sysdeps/powerpc/powerpc64/power6/memset.S (memset): Likewise.
	* sysdeps/powerpc/powerpc64/power7/memcpy.S (memcpy): Likewise.
	* sysdeps/powerpc/powerpc64/power7/mempcpy.S (__mempcpy):
	Likewise.
	* sysdeps/powerpc/powerpc64/power7/memset.S (memset): Likewise.
	* sysdeps/powerpc/powerpc64/power8/memset.S (memset): Likewise.
	* sysdeps/tile/memcmp.c (__ptr_t): Remove macro.
	(MEMCMP): Use void * instead of ptr_t.
	* sysdeps/unix/sysv/linux/alpha/oldglob.c (old_glob_t): Likewise.
	* sysdeps/unix/sysv/linux/mmap.c (__mmap): Likewise.
2017-08-08 17:14:49 +00:00
Joseph Myers bfff8b1bec Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Joseph Myers 0acb8a2a85 Refactor long double information into bits/long-double.h.
Information about whether the ABI of long double is the same as that
of double is split between bits/mathdef.h and bits/wordsize.h.

When the ABIs are the same, bits/mathdef.h defines
__NO_LONG_DOUBLE_MATH.  In addition, in the case where the same glibc
binary supports both -mlong-double-64 and -mlong-double-128,
bits/wordsize.h defines __LONG_DOUBLE_MATH_OPTIONAL, along with
__NO_LONG_DOUBLE_MATH if this particular compilation is with
-mlong-double-64.

As part of the refactoring I proposed in
<https://sourceware.org/ml/libc-alpha/2016-11/msg00745.html>, this
patch puts all that information in a single header,
bits/long-double.h.  It is included from sys/cdefs.h alongside the
include of bits/wordsize.h, so other headers generally do not need to
include bits/long-double.h directly.

Previously, various bits/mathdef.h headers and bits/wordsize.h headers
had this long double information (including implicitly in some
bits/mathdef.h headers through not having the defines present in the
default version).  After the patch, it's all in six bits/long-double.h
headers.  Furthermore, most of those new headers are not
architecture-specific.  Architectures with optional long double all
use the ldbl-opt sysdeps directory, either in the order (ldbl-64-128,
ldbl-opt, ldbl-128) or (ldbl-128ibm, ldbl-opt).  Thus a generic header
for the case where long double = double, and headers in ldbl-128,
ldbl-96 and ldbl-opt, suffices to cover every architecture except for
cases where long double properties vary between different ABIs sharing
a set of installed headers; fortunately all the ldbl-opt cases share a
single compiler-predefined macro __LONG_DOUBLE_128__ that can be used
to tell whether this compilation is -mlong-double-64 or
-mlong-double-128.

The two cases where a set of headers is shared between ABIs with
different long double properties, MIPS (o32 has long double = double,
other ABIs use ldbl-128) and SPARC (32-bit has optional long double,
64-bit has required long double), need their own bits/long-double.h
headers.

As with bits/wordsize.h, multiple-include protection for this header
is generally implicit through the include guards on sys/cdefs.h, and
multiple inclusion is harmless in any case.  There is one subtlety:
the header must not define __LONG_DOUBLE_MATH_OPTIONAL if
__NO_LONG_DOUBLE_MATH was defined before its inclusion, because doing
so breaks how sysdeps/ieee754/ldbl-opt/nldbl-compat.h defines
__NO_LONG_DOUBLE_MATH itself before including system headers.  Subject
to keeping that working, it would be reasonable to move these macros
from defined/undefined #ifdef to always-defined 1/0 #if semantics, but
this patch does not attempt to do so, just rearranges where the macros
are defined.

After this patch, the only use of bits/mathdef.h is the alpha one for
modifying complex function ABIs for old GCC.  Thus, all versions of
the header other than the default and alpha versions are removed, as
is the include from math.h.

Tested for x86_64 and x86.  Also did compilation-only testing with
build-many-glibcs.py.

	* bits/long-double.h: New file.
	* sysdeps/ieee754/ldbl-128/bits/long-double.h: Likewise.
	* sysdeps/ieee754/ldbl-96/bits/long-double.h: Likewise.
	* sysdeps/ieee754/ldbl-opt/bits/long-double.h: Likewise.
	* sysdeps/mips/bits/long-double.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/long-double.h: Likewise.
	* math/Makefile (headers): Add bits/long-double.h.
	* misc/sys/cdefs.h: Include <bits/long-double.h>.
	* stdlib/strtold.c: Include <bits/long-double.h> instead of
	<bits/wordsize.h>.
	* bits/mathdef.h [!_COMPLEX_H]: Do not allow inclusion.
	[!__NO_LONG_DOUBLE_MATH]: Remove conditional code.
	* math/math.h: Do not include <bits/mathdef.h>.
	* sysdeps/aarch64/bits/mathdef.h: Remove file.
	* sysdeps/alpha/bits/mathdef.h [!_COMPLEX_H]: Do not allow
	inclusion.
	* sysdeps/ia64/bits/mathdef.h: Remove file.
	* sysdeps/m68k/m680x0/bits/mathdef.h: Likewise.
	* sysdeps/mips/bits/mathdef.h: Likewise.
	* sysdeps/powerpc/bits/mathdef.h: Likewise.
	* sysdeps/s390/bits/mathdef.h: Likewise.
	* sysdeps/sparc/bits/mathdef.h: Likewise.
	* sysdeps/x86/bits/mathdef.h: Likewise.
	* sysdeps/s390/s390-32/bits/wordsize.h
	[!__NO_LONG_DOUBLE_MATH && !__LONG_DOUBLE_MATH_OPTIONAL]: Remove
	conditional code.
	* sysdeps/s390/s390-64/bits/wordsize.h
	[!__NO_LONG_DOUBLE_MATH && !__LONG_DOUBLE_MATH_OPTIONAL]:
	Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/wordsize.h
	[!__NO_LONG_DOUBLE_MATH && !__LONG_DOUBLE_MATH_OPTIONAL]:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
	[!__NO_LONG_DOUBLE_MATH && !__LONG_DOUBLE_MATH_OPTIONAL]:
	Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/wordsize.h
	[!__NO_LONG_DOUBLE_MATH && !__LONG_DOUBLE_MATH_OPTIONAL]:
	Likewise.
2016-12-14 18:27:56 +00:00
Joseph Myers b2491db6c8 Refactor FP_ILOGB* out of bits/mathdef.h.
Continuing the refactoring of bits/mathdef.h, this patch stops it
defining FP_ILOGB0 and FP_ILOGBNAN, moving the required information to
a new header bits/fp-logb.h.

There are only two possible values of each of those macros permitted
by ISO C.  TS 18661-1 adds corresponding macros for llogb, and their
values are required to correspond to those of the ilogb macros in the
obvious way.  Thus two boolean values - for which the same choices are
correct for most architectures - suffice to determine the value of all
these macros, and by defining macros for those boolean values in
bits/fp-logb.h we can then define the public FP_* macros in math.h and
avoid the present duplication of the associated feature test macro
logic.

This patch duly moves to bits/fp-logb.h defining __FP_LOGB0_IS_MIN and
__FP_LOGBNAN_IS_MIN.  Default definitions of those to 0 are correct
for both architectures, while ia64, m68k and x86 get their own
versions of bits/fp-logb.h to reflect their use of values different
from the defaults.

The patch renders many copies of bits/mathdef.h trivial (needed only
to avoid the default __NO_LONG_DOUBLE_MATH).  I'll revise
<https://sourceware.org/ml/libc-alpha/2016-11/msg00865.html>
accordingly so that it removes all bits/mathdef.h headers except the
default one and the alpha one, and arranges for the header to be
included only by complex.h as the only remaining use at that point
will be for the alpha ABI issues there.

Tested for x86_64 and x86.  Also did compile-only testing with
build-many-glibcs.py (using glibc sources from before the commit that
introduced many build failures with undefined __GI___sigsetjmp).

	* bits/fp-logb.h: New file.
	* sysdeps/ia64/bits/fp-logb.h: Likewise.
	* sysdeps/m68k/m680x0/bits/fp-logb.h: Likewise.
	* sysdeps/x86/bits/fp-logb.h: Likewise.
	* math/Makefile (headers): Add bits/fp-logb.h.
	* math/math.h: Include <bits/fp-logb.h>.
	[__USE_ISOC99] (FP_ILOGB0): Define based on __FP_LOGB0_IS_MIN.
	[__USE_ISOC99] (FP_ILOGBNAN): Define based on __FP_LOGBNAN_IS_MIN.
	* bits/mathdef.h (FP_ILOGB0): Remove.
	(FP_ILOGBNAN): Likewise.
	* sysdeps/aarch64/bits/mathdef.h (FP_ILOGB0): Likewise.
	(FP_ILOGBNAN): Likewise.
	* sysdeps/alpha/bits/mathdef.h (FP_ILOGB0): Likewise.
	(FP_ILOGBNAN): Likewise.
	* sysdeps/ia64/bits/mathdef.h (FP_ILOGB0): Likewise.
	(FP_ILOGBNAN): Likewise.
	* sysdeps/m68k/m680x0/bits/mathdef.h (FP_ILOGB0): Likewise.
	(FP_ILOGBNAN): Likewise.
	* sysdeps/mips/bits/mathdef.h (FP_ILOGB0): Likewise.
	(FP_ILOGBNAN): Likewise.
	* sysdeps/powerpc/bits/mathdef.h (FP_ILOGB0): Likewise.
	(FP_ILOGBNAN): Likewise.
	* sysdeps/s390/bits/mathdef.h (FP_ILOGB0): Likewise.
	(FP_ILOGBNAN): Likewise.
	* sysdeps/sparc/bits/mathdef.h (FP_ILOGB0): Likewise.
	(FP_ILOGBNAN): Likewise.
	* sysdeps/x86/bits/mathdef.h (FP_ILOGB0): Likewise.
	(FP_ILOGBNAN): Likewise.
2016-12-01 02:56:55 +00:00
Joseph Myers 93eb85ceb2 Refactor float_t, double_t information into bits/flt-eval-method.h.
At present, definitions of float_t and double_t are split among many
bits/mathdef.h headers.

For all but three architectures, these types are float and double.
Furthermore, if you assume __FLT_EVAL_METHOD__ to be defined, that
provides a more generic way of determining the correct values of these
typedefs.  Defining these typedefs more generally based on
__FLT_EVAL_METHOD__ was previously proposed by Paul Eggert in
<https://sourceware.org/ml/libc-alpha/2012-02/msg00002.html>.

This patch refactors things in the way I proposed in
<https://sourceware.org/ml/libc-alpha/2016-11/msg00745.html>.  A new
header bits/flt-eval-method.h defines a single macro,
__GLIBC_FLT_EVAL_METHOD, which is then used by math.h to define
float_t and double_t.  The default is based on __FLT_EVAL_METHOD__
(although actually a default to 0 would have the same effect for
current ports, because ports where values other than 0 or 16 are
possible all have their own headers).

To avoid changing the existing semantics in any case, including for
compilers not defining __FLT_EVAL_METHOD__, architecture-specific
files are then added for m68k, s390, x86 which replicate the existing
semantics.  At least with __FLT_EVAL_METHOD__ values possible with
GCC, there should be no change to the choices of float_t and double_t
for any supported configuration.

Architecture maintainer notes:

* m68k: sysdeps/m68k/m680x0/bits/flt-eval-method.h always defines
  __GLIBC_FLT_EVAL_METHOD to 2 to replicate the existing logic.  But
  actually GCC defines __FLT_EVAL_METHOD__ to 0 if TARGET_68040.  It
  might make sense to make the header prefer to base things on
  __FLT_EVAL_METHOD__ if defined, like the x86 version, and so make
  the choices of these types more accurate (with a NEWS entry as for
  the other changes to these types on particular architectures).

* s390: sysdeps/s390/bits/flt-eval-method.h always defines
  __GLIBC_FLT_EVAL_METHOD to 1 to replicate the existing logic.  As
  previously discussed, it might make sense in coordination with GCC
  to eliminate the historic mistake, avoid excess precision in the
  -fexcess-precision=standard case and make the typedefs match (with a
  NEWS entry, again).

Tested for x86-64 and x86.  Also did compilation-only testing with
build-many-glibcs.py.

	* bits/flt-eval-method.h: New file.
	* sysdeps/m68k/m680x0/bits/flt-eval-method.h: Likewise.
	* sysdeps/s390/bits/flt-eval-method.h: Likewise.
	* sysdeps/x86/bits/flt-eval-method.h: Likewise.
	* math/Makefile (headers): Add bits/flt-eval-method.h.
	* math/math.h: Include <bits/flt-eval-method.h>.
	[__USE_ISOC99] (float_t): Define based on __GLIBC_FLT_EVAL_METHOD.
	[__USE_ISOC99] (double_t): Likewise.
	* bits/mathdef.h (float_t): Remove.
	(double_t): Likewise.
	* sysdeps/aarch64/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/alpha/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/arm/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/hppa/fpu/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/ia64/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/m68k/m680x0/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/mips/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/powerpc/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/s390/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/sh/sh4/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/sparc/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/tile/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
	* sysdeps/x86/bits/mathdef.h (float_t): Likewise.
	(double_t): Likewise.
2016-11-24 18:44:50 +00:00
Steve Ellcey d060cd002d Define wordsize.h macros everywhere
* bits/wordsize.h: Add documentation.
	* sysdeps/aarch64/bits/wordsize.h : New file
	* sysdeps/generic/stdint.h (PTRDIFF_MIN, PTRDIFF_MAX): Update
	definitions.
	(SIZE_MAX): Change ifdef to if in __WORDSIZE32_SIZE_ULONG check.
	* sysdeps/gnu/bits/utmp.h (__WORDSIZE_TIME64_COMPAT32): Check
	with #if instead of #ifdef.
	* sysdeps/gnu/bits/utmpx.h (__WORDSIZE_TIME64_COMPAT32): Ditto.
	* sysdeps/mips/bits/wordsize.h (__WORDSIZE32_SIZE_ULONG,
	__WORDSIZE32_PTRDIFF_LONG, __WORDSIZE_TIME64_COMPAT32):
	Add or change defines.
	* sysdeps/powerpc/powerpc32/bits/wordsize.h: Likewise.
	* sysdeps/powerpc/powerpc64/bits/wordsize.h: Likewise.
	* sysdeps/s390/s390-32/bits/wordsize.h: Likewise.
	* sysdeps/s390/s390-64/bits/wordsize.h: Likewise.
	* sysdeps/sparc/sparc32/bits/wordsize.h: Likewise.
	* sysdeps/sparc/sparc64/bits/wordsize.h: Likewise.
	* sysdeps/tile/tilegx/bits/wordsize.h: Likewise.
	* sysdeps/tile/tilepro/bits/wordsize.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/wordsize.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/wordsize.h: Likewise.
	* sysdeps/wordsize-32/bits/wordsize.h: Likewise.
	* sysdeps/wordsize-64/bits/wordsize.h: Likewise.
	* sysdeps/x86/bits/wordsize.h: Likewise.
2016-11-04 09:37:44 -07:00
Joseph Myers ec94343f59 Add femode_t functions.
TS 18661-1 defines a type femode_t to represent the set of dynamic
floating-point control modes (such as the rounding mode and trap
enablement modes), and functions fegetmode and fesetmode to manipulate
those modes (without affecting other state such as the raised
exception flags) and a corresponding macro FE_DFL_MODE.

This patch series implements those interfaces for glibc.  This first
patch adds the architecture-independent pieces, the x86 and x86_64
implementations, and the <bits/fenv.h> and ABI baseline updates for
all architectures so glibc keeps building and passing the ABI tests on
all architectures.  Subsequent patches add the fegetmode and fesetmode
implementations for other architectures.

femode_t is generally an integer type - the same type as fenv_t, or as
the single element of fenv_t where fenv_t is a structure containing a
single integer (or the single relevant element, where it has elements
for both status and control registers) - except where architecture
properties or consistency with the fenv_t implementation indicate
otherwise.  FE_DFL_MODE follows FE_DFL_ENV in whether it's a magic
pointer value (-1 cast to const femode_t *), a value that can be
distinguished from valid pointers by its high bits but otherwise
contains a representation of the desired register contents, or a
pointer to a constant variable (the powerpc case; __fe_dfl_mode is
added as an exported constant object, an alias to __fe_dfl_env).

Note that where architectures (that share a register between control
and status bits) gain definitions of new floating-point control or
status bits in future, the implementations of fesetmode for those
architectures may need updating (depending on whether the new bits are
control or status bits and what the implementation does with
previously unknown bits), just like existing implementations of
<fenv.h> functions that take care not to touch reserved bits may need
updating when the set of reserved bits changes.  (As any new bits are
outside the scope of ISO C, that's just a quality-of-implementation
issue for supporting them, not a conformance issue.)

As with fenv_t, femode_t should properly include any software DFP
rounding mode (and for both fenv_t and femode_t I'd consider that
fragment of DFP support appropriate for inclusion in glibc even in the
absence of the rest of libdfp; hardware DFP rounding modes should
already be included if the definitions of which bits are status /
control bits are correct).

Tested for x86_64, x86, mips64 (hard float, and soft float to test the
fallback version), arm (hard float) and powerpc (hard float, soft
float and e500).  Other architecture versions are untested.

	* math/fegetmode.c: New file.
	* math/fesetmode.c: Likewise.
	* sysdeps/i386/fpu/fegetmode.c: Likewise.
	* sysdeps/i386/fpu/fesetmode.c: Likewise.
	* sysdeps/x86_64/fpu/fegetmode.c: Likewise.
	* sysdeps/x86_64/fpu/fesetmode.c: Likewise.
	* math/fenv.h: Update comment on inclusion of <bits/fenv.h>.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (fegetmode): New function
	declaration.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (fesetmode): Likewise.
	* bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)] (femode_t): New
	typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/aarch64/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/alpha/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/arm/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/hppa/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/ia64/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/m68k/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/microblaze/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/mips/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/nios2/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/powerpc/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (__fe_dfl_mode): New variable
	declaration.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/s390/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/sh/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/sparc/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/tile/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* sysdeps/x86/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(femode_t): New typedef.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FE_DFL_MODE): New macro.
	* manual/arith.texi (FE_DFL_MODE): Document macro.
	(fegetmode): Document function.
	(fesetmode): Likewise.
	* math/Versions (fegetmode): New libm symbol at version
	GLIBC_2.25.
	(fesetmode): Likewise.
	* math/Makefile (libm-support): Add fegetmode and fesetmode.
	(tests): Add test-femode and test-femode-traps.
	* math/test-femode-traps.c: New file.
	* math/test-femode.c: Likewise.
	* sysdeps/powerpc/fpu/fenv_const.c (__fe_dfl_mode): Declare as
	alias for __fe_dfl_env.
	* sysdeps/powerpc/nofpu/fenv_const.c (__fe_dfl_mode): Likewise.
	* sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c
	(__fe_dfl_mode): Likewise.
	* sysdeps/powerpc/Versions (__fe_dfl_mode): New libm symbol at
	version GLIBC_2.25.
	* sysdeps/nacl/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2016-09-07 16:40:09 +00:00
Joseph Myers f7a9f785e5 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Joseph Myers de071d199a Move bits/atomic.h to atomic-machine.h (bug 14912).
It was noted in
<https://sourceware.org/ml/libc-alpha/2012-09/msg00305.html> that the
bits/*.h naming scheme should only be used for installed headers.
This patch renames bits/atomic.h to atomic-machine.h to follow that
convention.

This is the only change in this series that needs to change the
filename rather than simply removing a directory level (because both
atomic.h and bits/atomic.h exist at present).

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).

	[BZ #14912]
	* sysdeps/aarch64/bits/atomic.h: Move to ...
	* sysdeps/aarch64/atomic-machine.h: ...here.
	(_AARCH64_BITS_ATOMIC_H): Rename macro to
	_AARCH64_ATOMIC_MACHINE_H.
	* sysdeps/alpha/bits/atomic.h: Move to ...
	* sysdeps/alpha/atomic-machine.h: ...here.
	* sysdeps/arm/bits/atomic.h: Move to ...
	* sysdeps/arm/atomic-machine.h: ...here.  Update comments.
	* bits/atomic.h: Move to ...
	* sysdeps/generic/atomic-machine.h: ...here.
	(_BITS_ATOMIC_H): Rename macro to _ATOMIC_MACHINE_H.
	* sysdeps/i386/bits/atomic.h: Move to ...
	* sysdeps/i386/atomic-machine.h: ...here.
	* sysdeps/ia64/bits/atomic.h: Move to ...
	* sysdeps/ia64/atomic-machine.h: ...here.
	* sysdeps/m68k/coldfire/bits/atomic.h: Move to ...
	* sysdeps/m68k/coldfire/atomic-machine.h: ...here.
	(_BITS_ATOMIC_H): Rename macro to _ATOMIC_MACHINE_H.
	* sysdeps/m68k/m680x0/m68020/bits/atomic.h: Move to ...
	* sysdeps/m68k/m680x0/m68020/atomic-machine.h: ...here.
	* sysdeps/microblaze/bits/atomic.h: Move to ...
	* sysdeps/microblaze/atomic-machine.h: ...here.
	* sysdeps/mips/bits/atomic.h: Move to ...
	* sysdeps/mips/atomic-machine.h: ...here.
	(_MIPS_BITS_ATOMIC_H): Rename macro to _MIPS_ATOMIC_MACHINE_H.
	* sysdeps/powerpc/bits/atomic.h: Move to ...
	* sysdeps/powerpc/atomic-machine.h: ...here.  Update comments.
	* sysdeps/powerpc/powerpc32/bits/atomic.h: Move to ...
	* sysdeps/powerpc/powerpc32/atomic-machine.h: ...here.  Update
	comments.  Include <atomic-machine.h> instead of <bits/atomic.h>.
	* sysdeps/powerpc/powerpc64/bits/atomic.h: Move to ...
	* sysdeps/powerpc/powerpc64/atomic-machine.h: ...here.  Include
	<atomic-machine.h> instead of <bits/atomic.h>.
	* sysdeps/s390/bits/atomic.h: Move to ...
	* sysdeps/s390/atomic-machine.h: ...here.
	* sysdeps/sparc/sparc32/bits/atomic.h: Move to ...
	* sysdeps/sparc/sparc32/atomic-machine.h: ...here.
	(_BITS_ATOMIC_H): Rename macro to _ATOMIC_MACHINE_H.
	* sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: Move to ...
	* sysdeps/sparc/sparc32/sparcv9/atomic-machine.h: ...here.
	* sysdeps/sparc/sparc64/bits/atomic.h: Move to ...
	* sysdeps/sparc/sparc64/atomic-machine.h: ...here.
	* sysdeps/tile/bits/atomic.h: Move to ...
	* sysdeps/tile/atomic-machine.h: ...here.
	* sysdeps/tile/tilegx/bits/atomic.h: Move to ...
	* sysdeps/tile/tilegx/atomic-machine.h: ...here.  Include
	<sysdeps/tile/atomic-machine.h> instead of
	<sysdeps/tile/bits/atomic.h>.
	(_BITS_ATOMIC_H): Rename macro to _ATOMIC_MACHINE_H.
	* sysdeps/tile/tilepro/bits/atomic.h: Move to ...
	* sysdeps/tile/tilepro/atomic-machine.h: ...here.  Include
	<sysdeps/tile/atomic-machine.h> instead of
	<sysdeps/tile/bits/atomic.h>.
	(_BITS_ATOMIC_H): Rename macro to _ATOMIC_MACHINE_H.
	* sysdeps/unix/sysv/linux/arm/bits/atomic.h: Move to ...
	* sysdeps/unix/sysv/linux/arm/atomic-machine.h: ...here.  Include
	<sysdeps/arm/atomic-machine.h> instead of
	<sysdeps/arm/bits/atomic.h>.
	* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Move to ...
	* sysdeps/unix/sysv/linux/hppa/atomic-machine.h: ...here.
	(_BITS_ATOMIC_H): Rename macro to _ATOMIC_MACHINE_H.
	* sysdeps/unix/sysv/linux/m68k/coldfire/bits/atomic.h: Move to ...
	* sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h: ...here.
	(_BITS_ATOMIC_H): Rename macro to _ATOMIC_MACHINE_H.
	* sysdeps/unix/sysv/linux/nios2/bits/atomic.h: Move to ...
	* sysdeps/unix/sysv/linux/nios2/atomic-machine.h: ...here.
	(_NIOS2_BITS_ATOMIC_H): Rename macro to _NIOS2_ATOMIC_MACHINE_H.
	* sysdeps/unix/sysv/linux/sh/bits/atomic.h: Move to ...
	* sysdeps/unix/sysv/linux/sh/atomic-machine.h: ...here.
	* sysdeps/x86_64/bits/atomic.h: Move to ...
	* sysdeps/x86_64/atomic-machine.h: ...here.
	* include/atomic.h: Include <atomic-machine.h> instead of
	<bits/atomic.h>.
2015-09-11 20:00:19 +00:00
Andrew Bennett 7498d7676d MIPS: Only use .set mips* assembler directives when necessary
There are a few .set mips* assembler directives used in the MIPS specific
sysdep code that force an instruction to be assembled for a specific ISA.
The reason for these is to allow an instruction to be encoded when it might
not be supported in the current ISA (when the code is run the Linux kernel
will trap and emulate any unsupported instructions).  Unfortunately forcing
a specific ISA means that when assembling for a newer ISA, where the
instruction has a different encoding, the wrong encoding will be used.

        * sysdeps/mips/bits/atomic.h [_MIPS_SIM == _ABIO32] (MIPS_PUSH_MIPS2):
        Only use .set mips2 if the current ISA is below mips2.
        * sysdeps/mips/sys/tas.h [_MIPS_SIM == _ABIO32] (_test_and_set):
        Likewise.
        * sysdeps/mips/nptl/tls.h (READ_THREAD_POINTER): Only use .set
        mips32r2 if the current ISA is below mips32r2.
        * sysdeps/mips/tls-macros.h (TLS_RDHWR): New define.
        (TLS_IE): Updated to use the TLD_RDHWR macro.
        (TLS_LE): Likewise.
        * sysdeps/unix/mips/sysdep.h (__mips_isa_rev): Moved out of #ifdef
        __ASSEMBLER__ condition.
2015-09-08 16:52:43 +01:00
Joseph Myers 522e02ab8a Rename bits/linkmap.h to linkmap.h (bug 14912).
It was noted in
<https://sourceware.org/ml/libc-alpha/2012-09/msg00305.html> that the
bits/*.h naming scheme should only be used for installed headers.
This patch renames bits/linkmap.h to plain linkmap.h to follow that
convention.

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).

	[BZ #14912]
	* bits/linkmap.h: Move to ...
	* sysdeps/generic/linkmap.h: ...here.
	* sysdeps/aarch64/bits/linkmap.h: Move to ...
	* sysdeps/aarch64/linkmap.h: ...here.
	* sysdeps/arm/bits/linkmap.h: Move to ...
	* sysdeps/arm/linkmap.h: ...here.
	* sysdeps/hppa/bits/linkmap.h: Move to ...
	* sysdeps/hppa/linkmap.h: ...here.
	* sysdeps/ia64/bits/linkmap.h: Move to ...
	* sysdeps/ia64/linkmap.h: ...here.
	* sysdeps/mips/bits/linkmap.h: Move to ...
	* sysdeps/mips/linkmap.h: ...here.
	* sysdeps/s390/bits/linkmap.h: Move to ...
	* sysdeps/s390/linkmap.h: ...here.
	* sysdeps/sh/bits/linkmap.h: Move to ...
	* sysdeps/sh/linkmap.h: ...here.
	* sysdeps/x86/bits/linkmap.h: Move to ...
	* sysdeps/x86/linkmap.h: ...here.
	* include/link.h: Include <linkmap.h> instead of <bits/linkmap.h>.
2015-09-04 19:44:27 +00:00
Steve Ellcey 9ee16d8b34 2015-02-18 Steve Ellcey <sellcey@imgtec.com>
* sysdeps/unix/sysv/linux/mips/bits/endian.h: Remove.
	* sysdeps/mips/bits/endian.h: Fix comments.
2015-02-18 10:51:37 -08:00
Steve Ellcey 2caa4099de 2015-02-17 Steve Ellcey <sellcey@imgtec.com>
* sysdeps/mips/bits/endian.h (__MIPSEL): Use #ifdef instead of #if.
2015-02-17 10:04:33 -08:00
Steve Ellcey e525154e84 2015-02-13 Steve Ellcey <sellcey@imgtec.com>
* sysdeps/mips/bits/endian.h (__MIPSEB): Use #ifdef instead of #if.
	* sysdeps/mips/memcpy.S (__MIPSEB): Ditto.
	* sysdeps/mips/memset.S (__MIPSEB): Ditto.
2015-02-13 17:38:06 -08:00
Joseph Myers df34134284 Disable 64-bit atomics for MIPS n32.
This patch disables use of 64-bit atomics for MIPS n32 to fix the
problems with unaligned semaphores.

Before 64-bit atomics are used for anything for which such alignment
issues do not arise, and before the addition of any new ILP32 ports
with 64-bit semaphores for which the ABI can be set to have the
greater alignment (AARCH64?), a better approach will need to be
established that allows architectures to declare their 64-bit atomics
availability accurately, without doing so causing inappropriate use of
such atomics on unaligned semaphores.

Tested for MIPS n32 that this fixes the nptl/tst-sem3 failure.

	* sysdeps/mips/bits/atomic.h [_MIPS_SIM == _ABIN32]
	(__HAVE_64B_ATOMICS): Define to 0.
2015-01-28 18:40:35 +00:00
Joseph Myers b168057aaa Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Matthew Fortune 0bd956720c Add support for MIPS O32 FPXX and .MIPS.abiflags
* elf/elf.h (PT_MIPS_ABIFLAGS): Define.
	(Elf_MIPS_ABIFlags_v0): New structure.
	(EF_MIPS_FP64): Define.
	(MIPS_AFL_REG_NONE, MIPS_AFL_REG_32, MIPS_AFL_REG_64): Likewise.
	(MIPS_AFL_REG_128, MIPS_AFL_ASE_DSP, MIPS_AFL_ASE_DSP64): Likewise.
	(MIPS_AFL_ASE_DSPR2, MIPS_AFL_ASE_EVA, MIPS_AFL_ASE_MCU): Likewise.
	(MIPS_AFL_ASE_MDMX, MIPS_AFL_ASE_MIPS3D, MIPS_AFL_ASE_MT): Likewise.
	(MIPS_AFL_ASE_SMARTMIPS, MIPS_AFL_ASE_VIRT): Likewise.
	(MIPS_AFL_ASE_VIRT64, MIPS_AFL_ASE_MSA, MIPS_AFL_ASE_MSA64): Likewise.
	(MIPS_AFL_ASE_MIPS16, MIPS_AFL_ASE_MICROMIPS): Likewise.
	(MIPS_AFL_ASE_XPA, MIPS_AFL_EXT_XLR, MIPS_AFL_EXT_OCTEON2): Likewise.
	(MIPS_AFL_EXT_OCTEONP, MIPS_AFL_EXT_LOONGSON_3A): Likewise.
	(MIPS_AFL_EXT_OCTEON, MIPS_AFL_EXT_5900, MIPS_AFL_EXT_4010): Likewise.
	(MIPS_AFL_EXT_4100, MIPS_AFL_EXT_3900, MIPS_AFL_EXT_10000): Likewise.
	(MIPS_AFL_EXT_SB1, MIPS_AFL_EXT_4111, MIPS_AFL_EXT_4120): Likewise.
	(MIPS_AFL_EXT_5400, MIPS_AFL_EXT_5500): Likewise.
	(MIPS_AFL_EXT_LOONGSON_2E, MIPS_AFL_EXT_LOONGSON_2F): Likewise.
	(Val_GNU_MIPS_ABI_FP_ANY, Val_GNU_MIPS_ABI_FP_DOUBLE): New enum values.
	(Val_GNU_MIPS_ABI_FP_SINGLE, Val_GNU_MIPS_ABI_FP_SOFT): Likewise.
	(Val_GNU_MIPS_ABI_FP_OLD_64, Val_GNU_MIPS_ABI_FP_XX): Likewise.
	(Val_GNU_MIPS_ABI_FP_64, Val_GNU_MIPS_ABI_FP_64A): Likewise.
	(Val_GNU_MIPS_ABI_FP_MAX): Likewise.
	* sysdeps/mips/Makefile [subdir=elf]: Add tst-abi-interlink,
	tst-mode-switch-1, tst-mode-switch-2, tst-mode-switch-3 tests.
	* sysdeps/mips/bits/linkmap.h (struct link_map_machine): Add fpmode
	field.
	* sysdeps/mips/dl-machine.h (elf_machine_matches_host): Reject
	EF_MIPS_FP64.
	* sysdeps/mips/dl-machine-reject-phdr.h: New file.
	* sysdeps/mips/tst-abi-fp32mod.c: Likewise.
	* sysdeps/mips/tst-abi-fpxxmod.c: Likewise.
	* sysdeps/mips/tst-abi-fpxxomod.c: Likewise.
	* sysdeps/mips/tst-abi-fp64mod.c: Likewise.
	* sysdeps/mips/tst-abi-fp64amod.c: Likewise.
	* sysdeps/mips/tst-abi-interlink.c: Likewise.
	* sysdeps/mips/tst-mode-switch-1.c: Likewise.
	* sysdeps/mips/tst-mode-switch-2.c: Likewise.
	* sysdeps/mips/tst-mode-switch-3.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/configure.ac (o32-fpabi): Define to
	record the current FP ABI extension.
	(mips-mode-switch): Define to show if kernel headers support mode
	switching.
	* sysdeps/unix/sysv/linux/mips/configure: Regenerate.
	* sysdeps/unix/sysv/linux/mips/ldsodefs.h: Increase maximum
	supported SYSV ABI version to 3.
	* sysdeps/unix/sysv/linux/mips/libc-abis: Add new MIPS_O32_FP64
	feature.
2014-12-31 21:09:21 +00:00
Torvald Riegel 1ea339b697 Add arch-specific configuration for C11 atomics support.
This sets __HAVE_64B_ATOMICS if provided.  It also sets
USE_ATOMIC_COMPILER_BUILTINS to true if the existing atomic ops use the
__atomic* builtins (aarch64, mips partially) or if this has been
tested (x86_64); otherwise, this is set to false so that C11 atomics will
be based on the existing atomic operations.
2014-11-20 11:57:38 +01:00
Joseph Myers 1ca2d03e3e Fix -Wundef warnings for _ABI* on MIPS.
This patch fixes -Wundef warnings related to the _ABI* macros on MIPS.
GCC predefines only the _ABI* macro related to the ABI actually in
use, meaning that a conditional such as "#if _MIPS_SIM == _ABI64" is
true only for the ABI in question (all the macros are nonzero), but
produces a -Wundef warning for the other ABIs.  The normal approach to
using these macros is to include <sgidefs.h>, which ensures that all
three _ABI* macros are defined rather than just one; this patch does
so in the places that caused warnings (the bulk of the warnings
arising from <bits/wordsize.h>).  Tested that the warnings are fixed.

	* sysdeps/mips/bits/wordsize.h: Include <sgidefs.h>.
	* sysdeps/unix/sysv/linux/mips/getrlimit64.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/setrlimit64.c: Likewise.
2014-03-21 18:21:13 +00:00
Joseph Myers 2ad7600be7 Move mips from ports to libc.
I've moved the MIPS port from ports to the main sysdeps hierarchy.
Beyond the README update, the move of the files was simply

git mv ports/sysdeps/mips sysdeps/mips
git mv ports/sysdeps/unix/mips sysdeps/unix/mips
git mv ports/sysdeps/unix/sysv/linux/mips sysdeps/unix/sysv/linux/mips

and in addition to the ChangeLog entries here, I put a note at the top
of ports/ChangeLog.mips similar to those in other files.

Tested that disassembly of installed shared libraries for mips is the
same before and after this patch (except for ld.so where paths in
assertions are involved, as for arm).

	* sysdeps/mips: Move directory from ports/sysdeps/mips.
	* sysdeps/unix/mips: Move directory from ports/sysdeps/unix/mips.
	* sysdeps/unix/sysv/linux/mips: Move directory from
	ports/sysdeps/unix/sysv/linux/mips.
	* README: Update listing for mips-*-linux-gnu and
	mips64-*-linux-gnu.

	* sysdeps/mips: Move directory to ../sysdeps/mips.
	* sysdeps/unix/mips: Move directory to ../sysdeps/unix/mips.
	* sysdeps/unix/sysv/linux/mips: Move directory to
	../sysdeps/unix/sysv/linux/mips.
2014-02-10 23:30:21 +00:00
Roland McGrath 0d5cb2c74f [BZ #2329]
2006-02-20  Roland McGrath  <roland@redhat.com>
	* sysdeps/mips: Directory removed, saved in ports repository.
	* sysdeps/unix/mips: Likewise.
	* sysdeps/unix/sysv/linux/mips: Likewise.
	* sysdeps/mach/mips: Likewise.
	* sysdeps/mach/hurd/mips: Likewise.
	* shlib-versions: Remove mips matches, now in ports fragment.
	* sysdeps/unix/sysv/linux/kernel-features.h: Likewise.
	* configure.in (machine): Likewise.
	* configure: Regenerated.
2006-02-15  Thomas Schwinge  <tschwinge@gnu.org>

	[BZ #2329]
	* include/unistd.h (__getresuid, __getresgid, __setresuid)
	(__setresgid): Fix argument name order in prototypes.
	* posix/unistd.h (getresuid, getresgid, setresuid, setresgid):
	Likewise.
	* posix/getresuid.c (__getresuid): Fix argument order in definition.
	* posix/getresgid.c (__getresgid): Likewise.
	* posix/setresuid.c (__setresuid): Likewise.
	* posix/setresgid.c (__setresgid): Likewise.
	* sysdeps/mach/hurd/getresuid.c (__getresuid): Likewise.
	* sysdeps/mach/hurd/getresgid.c (__getresgid): Likewise.
	* sysdeps/mach/hurd/setresuid.c (__setresuid): Likewise.
	* sysdeps/mach/hurd/setresgid.c (__setresgid): Likewise.
	Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>.
2006-02-21 02:30:10 +00:00
Roland McGrath fea3f995bd * math/divtc3.c: New file.
* math/multc3.c: New file.
	* sysdeps/unix/sysv/linux/sparc/sparc32/Makefile
	[$(subdir) = math] (libm-routines): Add multc3, divtc3.

	* sysdeps/unix/sysv/linux/sparc/sparc32/fpu/Implies: New file.
	* sysdeps/sparc/sparc32/fpu/s_fabsl.c: Include math.h and
	math_ldbl_opt.h.
	(fabsl): Use long_double_symbol instead of weak_alias.
	* sysdeps/sparc/sparc32/fpu/s_fabs.c: Include math.h and
	math_ldbl_opt.h.
	[LONG_DOUBLE_COMPAT] (fabsl): Add compat_symbol.

2006-01-31  Martin Schwidefsky	<schwidefsky@de.ibm.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/s390/Implies: New file.
	* sysdeps/unix/sysv/linux/s390/fpu/Implies: New file.
	* sysdeps/unix/sysv/linux/s390/nldbl-abi.h: New file.
	* sysdeps/s390/fpu/bits/mathinline.h (signbitl, sqrtl): New inlines.
	* sysdeps/s390/bits/mathdef.h: New file.
	* sysdeps/s390/fpu/e_sqrtl.c: New file.
	* sysdeps/s390/s390-32/bits/wordsize.h (__LONG_DOUBLE_MATH_OPTIONAL,
	__NO_LONG_DOUBLE_MATH): Define.
	* sysdeps/s390/s390-64/bits/wordsize.h: Likewise.
	* sysdeps/s390/Implies: Add ieee754/ldbl-128.
	* sysdeps/s390/ldbl2mpn.c: File removed.
	* sysdeps/s390/fpu/libm-test-ulps: Updated.

2006-01-31  Roland McGrath  <roland@redhat.com>

	* sysdeps/alpha/fpu/bits/mathdef.h: Moved to ...
	* sysdeps/alpha/bits/mathdef.h: ... here.
	* sysdeps/i386/fpu/bits/mathdef.h: Moved to ...
	* sysdeps/i386/bits/mathdef.h: ... here.
	* sysdeps/mips/fpu/bits/mathdef.h: Moved to ...
	* sysdeps/mips/bits/mathdef.h: ... here.
	* sysdeps/m68k/fpu/bits/mathdef.h: Moved to ...
	* sysdeps/m68k/bits/mathdef.h: ... here.
	* sysdeps/powerpc/fpu/bits/mathdef.h: Moved to ...
	* sysdeps/powerpc/bits/mathdef.h: ... here.
	* sysdeps/sparc/fpu/bits/mathdef.h: Moved to ...
	* sysdeps/sparc/bits/mathdef.h: ... here.
	* sysdeps/ia64/fpu/bits/mathdef.h: Moved to ...
	* sysdeps/ia64/bits/mathdef.h: ... here.
	* sysdeps/sh/sh4/fpu/bits/mathdef.h: Moved to ...
	* sysdeps/sh/sh4/bits/mathdef.h: ... here.
	* sysdeps/x86_64/fpu/bits/mathdef.h: Moved to ...
	* sysdeps/x86_64/bits/mathdef.h: ... here.

2006-01-31  Jakub Jelinek  <jakub@redhat.com>
2006-02-01 03:02:06 +00:00
Roland McGrath d5d55e016b * include/bits/setjmp.h: New file.
* setjmp/jmpbuf-offsets.h: New file.
	* sysdeps/alpha/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/alpha/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/hppa/bits/setjmp.h (JB_SP): Macro moved ...
	* sysdeps/hppa/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/i386/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/i386/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/mips/bits/setjmp.h (JB_PC): Macro removed.
	* sysdeps/powerpc/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/powerpc/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/s390/bits/setjmp.h: Remove __JB_* macros.
	* sysdeps/sh/bits/setjmp.h (JB_SIZE): Macro moved ...
	* sysdeps/sh/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/sparc/sparc32/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/sparc/sparc32/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Remove JB_* macros.
	* sysdeps/x86_64/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/x86_64/jmpbuf-offsets.h: ... here, new file.
2006-01-10 10:18:56 +00:00
Roland McGrath 0ca13e1412 * sysdeps/powerpc/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/powerpc/jmpbuf-unwind.h: ... here.
	* sysdeps/alpha/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/alpha/jmpbuf-unwind.h: ... here.
	* sysdeps/sparc/sparc32/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/sparc/sparc32/jmpbuf-unwind.h: ... here.
	* sysdeps/i386/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/i386/jmpbuf-unwind.h: ... here.
	* sysdeps/x86_64/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/x86_64/jmpbuf-unwind.h: ... here.
	* sysdeps/sh/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/sh/jmpbuf-unwind.h: ... here.
	* sysdeps/hppa/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/hppa/jmpbuf-unwind.h: ... here, new file.
	* sysdeps/mips/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/mips/jmpbuf-unwind.h: ... here.
	* sysdeps/m68k/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/m68k/jmpbuf-unwind.h: ... here, new file.
	* sysdeps/s390/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/s390/jmpbuf-unwind.h: ... here.
	* sysdeps/unix/sysv/linux/ia64/bits/setjmp.h (_JMPBUF_UNWINDS):
	Move macro ...
	* sysdeps/ia64/jmpbuf-unwind.h: ... here.
	* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h (_JMPBUF_UNWINDS):
	Move macro ...
	* sysdeps/sparc/sparc64/jmpbuf-unwind.h: ... here.

	* sysdeps/ia64/jmpbuf-unwind.h: New file, moved from nptl/.
2006-01-10 08:54:22 +00:00
Roland McGrath db169ed561 * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
(PTR_MANGLE): Fix cast.

	* sysdeps/alpha/bits/setjmp.h (_JMPBUF_UNWINDS): Take third argument
	DEMANGLE, and pass SP value through it.
	* sysdeps/hppa/bits/setjmp.h (_JMPBUF_UNWINDS): Likewise.
	* sysdeps/i386/bits/setjmp.h (_JMPBUF_UNWINDS): Likewise.
	* sysdeps/m68k/bits/setjmp.h (_JMPBUF_UNWINDS): Likewise.
	* sysdeps/mips/bits/setjmp.h (_JMPBUF_UNWINDS): Likewise.
	* sysdeps/powerpc/bits/setjmp.h (_JMPBUF_UNWINDS): Likewise.
	* sysdeps/s390/bits/setjmp.h (_JMPBUF_UNWINDS): Likewise.
	* sysdeps/sh/bits/setjmp.h (_JMPBUF_UNWINDS): Likewise.
	* sysdeps/sparc/sparc32/bits/setjmp.h (_JMPBUF_UNWINDS): Likewise.
	* sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Likewise.
	* sysdeps/x86_64/bits/setjmp.h (_JMPBUF_UNWINDS): Likewise.
	* hurd/sigunwind.c (_hurdsig_longjmp_from_handler): Pass inline
	demangler function to _JMPBUF_UNWINDS.
	* sysdeps/mach/hurd/jmp-unwind.c (demangle_ptr): New function.
	(_longjmp_unwind): Pass it to _JMPBUF_UNWINDS.
2005-12-28 05:42:30 +00:00
Roland McGrath 2ce7e666e9 * sysdeps/hppa/bits/setjmp.h: Add _BITS_SETJMP_H preprocessor
protection and allow pthread.h to include bits/setjmp.h as well as
	setjmp.h.
	* sysdeps/m68k/bits/setjmp.h: Likewise.
	* sysdeps/s390/bits/setjmp.h: Make sure only setjmp.h or pthread.h
	are allow to include bits/setjmp.h.
	* sysdeps/mips/bits/setjmp.h (_JMPBUF_UNWINDS): Cast rhs to match lhs
	cast of address.
	* sysdeps/sh/bits/setjmp.h: Likewise.

2005-11-12  Jim Meyering  <jim@meyering.net>

	* sysdeps/unix/opendir.c (__alloc_dir): Declare STATP parameter
	to be pointer to const.
	* include/dirent.h: Update decl.
2005-12-06 01:38:34 +00:00
Andreas Jaeger 78bf97c874 Protect against multiple inclusion. 2005-03-28 09:32:27 +00:00
Andreas Jaeger f850220be6 Update.
* sysdeps/mips/atomicity.h: Remove unused file.
	* sysdeps/mips/dl-machine.h (elf_machine_rel): Add TLS relocations.
	* sysdeps/mips/dl-tls.h: New file.
	* sysdeps/mips/libc-tls.c: New file.
	* sysdeps/mips/tls-macros.h: New file.
	* sysdeps/mips/bits/atomic.h: New file.
	* sysdeps/mips/bits/setjmp.h: Protect against multiple inclusion.
	* sysdeps/mips/elf/configure.in: New file.
	* sysdeps/mips/elf/configure: Generated.
	* sysdeps/mips/sys/asm.h: New file.
	* sysdeps/unix/sysv/linux/mips/vfork.S: New file.
	* sysdeps/unix/sysv/linux/mips/clone.S: Add NPTL and five-argument
	clone support.
	* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
	(INTERNAL_SYSCALL_NCS): New.
	(INTERNAL_SYSCALL): Update for non-constant support.
	(internal_syscall0): Likewise.
	(internal_syscall1): Likewise.
	(internal_syscall2): Likewise.
	(internal_syscall3): Likewise.
	(internal_syscall4): Likewise.
	(internal_syscall5): Likewise.
	(internal_syscall6): Likewise.
	(internal_syscall7): Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/siginfo.h (SIGEV_THREAD):
	Update to match the kernel.
	(SIGEV_CALLBACK): Likewise.
	(SIGEV_THREAD_ID): Likewise.

2005-03-28  Daniel Jacobowitz  <dan@codesourcery.com>
2005-03-28 09:26:46 +00:00
Andreas Jaeger abc85e9fea [BZ #783]
2005-03-28  Daniel Jacobowitz  <dan@codesourcery.com>
	[BZ #783]
	* elf/tst-auditmod1.c: Add MIPS support.
	* sysdeps/generic/ldsodefs.h (La_mips_32_regs): New.
	(La_mips_32_retval): New.
	(La_mips_64_regs): New.
	(La_mips_64_retval): New.
	(struct audit_ifaces): Add MIPS entries.
	* sysdeps/mips/dl-machine.h: Check RESOLVE_MAP instead of RESOLVE.
	(elf_machine_runtime_link_map, ELF_DL_FRAME_SIZE,
	ELF_DL_SAVE_ARG_REGS, ELF_DL_RESTORE_ARG_REGS,
	ELF_MACHINE_RUNTIME_TRAMPOLINE): Move to dl-trampoline.c.
	(RTLD_START): Align the stack before calling _dl_init_internal.
	Use .ent for _dl_start_user.
	(ARCH_LA_PLTENTER, ARCH_LA_PLTEXIT): Define.
	(elf_machine_rel, elf_machine_rel_relative, elf_machine_lazy_rel)
	(elf_machine_runtime_setup): Use "auto inline".
	(elf_machine_rela, elf_machine_rela_relative): Provide empty versions.
	(elf_machine_got_rel): Likewise.  Use RESOLVE_MAP.
	* sysdeps/mips/dl-trampoline.c: New file.
	* sysdeps/mips/bits/link.h: New file.
	* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
	(internal_syscall5): Use register operands instead of non-lvalue
	memory operands.
	(internal_syscall6): Likewise.
	(internal_syscall7): Likewise.
2005-03-28  Daniel Jacobowitz  <dan@codesourcery.com>

	[BZ #783]
	* elf/tst-auditmod1.c: Add MIPS support.
	* sysdeps/generic/ldsodefs.h (La_mips_32_regs): New.
	(La_mips_32_retval): New.
	(La_mips_64_regs): New.
	(La_mips_64_retval): New.
	(struct audit_ifaces): Add MIPS entries.
	* sysdeps/mips/dl-machine.h: Check RESOLVE_MAP instead of RESOLVE.
	(elf_machine_runtime_link_map, ELF_DL_FRAME_SIZE,
	ELF_DL_SAVE_ARG_REGS, ELF_DL_RESTORE_ARG_REGS,
	ELF_MACHINE_RUNTIME_TRAMPOLINE): Move to dl-trampoline.c.
	(RTLD_START): Align the stack before calling _dl_init_internal.
	Use .ent for _dl_start_user.
	(ARCH_LA_PLTENTER, ARCH_LA_PLTEXIT): Define.
	(elf_machine_rel, elf_machine_rel_relative, elf_machine_lazy_rel)
	(elf_machine_runtime_setup): Use "auto inline".
	(elf_machine_rela, elf_machine_rela_relative): Provide empty versions.
	(elf_machine_got_rel): Likewise.  Use RESOLVE_MAP.
	* sysdeps/mips/dl-trampoline.c: New file.
	* sysdeps/mips/bits/link.h: New file.
	* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
	(internal_syscall5): Use register operands instead of non-lvalue
	memory operands.
	(internal_syscall6): Likewise.
	(internal_syscall7): Likewise.
2005-03-28 07:49:19 +00:00
Ulrich Drepper a334319f65 (CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4. 2004-12-22 20:10:10 +00:00
Jakub Jelinek 0ecb606cb6 2.5-18.1 2007-07-12 18:26:36 +00:00
Roland McGrath a2f63c54dd * sysdeps/unix/sysv/linux/mips/bits/socket.h (__cmsg_nxthdr): Use
__NTH instead of __THROW in the inline definition.
	* sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Likewise.

	* sysdeps/mips/bits/dlfcn.h (RTLD_DEEPBIND): New macro.

	* sysdeps/unix/sysv/linux/mips/bits/mman.h
	(PROT_GROWSDOWN, PROT_GROWSUP): New macros.
2004-12-15 01:01:02 +00:00
Andreas Jaeger c997e9d40e Update.
2004-11-05  Maciej W. Rozycki  <macro@mips.com>

	* sysdeps/mips/dl-machine.h: Include <sgidefs.h>.  Use _ABIO32,
	_ABIN32 and _ABI64 for ABI selection throughout.
	* sysdeps/mips/elf/start.S: Likewise.
	* sysdeps/mips/mips64/__longjmp.c: Likewise.
	* sysdeps/mips/mips64/bsd-_setjmp.S: Likewise.
	* sysdeps/mips/mips64/bsd-setjmp.S: Likewise.
	* sysdeps/mips/mips64/setjmp.S: Likewise.
	* sysdeps/mips/mips64/setjmp_aux.c: Likewise.
	* sysdeps/mips/sys/regdef.h: Likewise.
	* sysdeps/mips/sys/ucontext.h: Likewise.
	* sysdeps/unix/mips/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/kernel-features.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/pread.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/sys/procfs.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise.

	* sysdeps/mips/atomicity.h: Use _ABIO32, _ABIN32 and _ABI64 for
	ABI selection throughout.
	* sysdeps/mips/bits/setjmp.h: Likewise.
	* sysdeps/mips/fpu/bits/mathdef.h: Likewise.
	* sysdeps/mips/machine-gmon.h: Likewise.
	* sysdeps/mips/sys/asm.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/sys/ptrace.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/sys/tas.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/sys/user.h: Likewise.

	* sysdeps/mips/sgidefs.h: Prevent <asm/sgidefs.h> from being 
	included by kernel headers and undo its settings if already 
	included.  Define _ABIO32, _ABIN32 and _ABI64 if missing and use 
	them to define _MIPS_SIM_ABI32, _MIPS_SIM_NABI32 and 
	_MIPS_SIM_ABI64 for compatibility.
	* sysdeps/unix/sysv/linux/mips/Makefile: Use _ABIO32, _ABIN32 and
	_ABI64 for ABI selection in generated syscall-list.h
	* sysdeps/unix/sysv/linux/mips/configure.in: Use _ABIO32, _ABIN32
	and _ABI64 for ABI selection in generated asm-unistd.h.
	* sysdeps/unix/sysv/linux/mips/configure: Regenerate.

	* sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Correct
	an inverted _MIPS_SIM conditional.
2004-11-24 04:39:24 +00:00
Andreas Jaeger 918f187fcf UPdate.
* sysdeps/unix/sysv/linux/mips/Makefile ($(objpfx)syscall-%.h):
	Sort by syscalls.  Make sure we get headers such as sgidefs.h from
	the build tree before just-installed ones.

	* sysdeps/mips/atomicity.h, sysdeps/mips/dl-machine.h,
	sysdeps/mips/machine-gmon.h, sysdeps/mips/bits/setjmp.h,
	sysdeps/mips/fpu/bits/mathdef.h,
	sysdeps/mips/mips64/__longjmp.c,
	sysdeps/mips/mips64/setjmp_aux.c,
	sysdeps/unix/sysv/linux/mips/kernel_stat.h,
	sysdeps/unix/sysv/linux/mips/pread.c,
	sysdeps/unix/sysv/linux/mips/pread64.c,
	sysdeps/unix/sysv/linux/mips/ptrace.c,
	sysdeps/unix/sysv/linux/mips/pwrite.c,
	sysdeps/unix/sysv/linux/mips/pwrite64.c,
	sysdeps/unix/sysv/linux/mips/sigaction.c,
	sysdeps/unix/sysv/linux/mips/sigcontextinfo.h,
	sysdeps/unix/sysv/linux/mips/bits/fcntl.h,
	sysdeps/unix/sysv/linux/mips/bits/sigcontext.h,
	sysdeps/unix/sysv/linux/mips/bits/stat.h,
	sysdeps/unix/sysv/linux/mips/sys/procfs.h,
	sysdeps/unix/sysv/linux/mips/sys/ptrace.h,
	sysdeps/unix/sysv/linux/mips/sys/tas.h,
	sysdeps/unix/sysv/linux/mips/sys/ucontext.h,
	sysdeps/unix/sysv/linux/mips/sys/user.h: Use standard names
	for ABI macros, include sgidefs.h where appropriate.
	sysdeps/unix/sysv/linux/mips/Makefile ($(objpfx)syscall-%.h):
	Likewise.
	sysdeps/unix/sysv/linux/mips/configure.in (asm-unistd.h):
	Likewise.
	sysdeps/unix/sysv/linux/mips/configure: Rebuilt.
2004-07-20 16:39:51 +00:00
Richard Henderson a86573f471 * math/Makefile (headers): Add bits/huge_valf.h, bits/huge_vall.h, and bits/inf.h. * math/math.h: Include them.
* sysdeps/alpha/fpu/bits/mathdef.h, sysdeps/arm/fpu/bits/mathdef.h,
        sysdeps/generic/bits/mathdef.h, sysdeps/i386/fpu/bits/mathdef.h,
        sysdeps/ia64/fpu/bits/mathdef.h, sysdeps/m68k/fpu/bits/mathdef.h,
        sysdeps/mips/fpu/bits/mathdef.h, sysdeps/powerpc/fpu/bits/mathdef.h,
        sysdeps/sh/sh4/fpu/bits/mathdef.h, sysdeps/sparc/fpu/bits/mathdef.h,
        sysdeps/x86_64/fpu/bits/mathdef.h: Remove INFINITY.

        * sysdeps/arm/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val.
        (HUGE_VALF, HUGE_VALL): Remove.
        * sysdeps/ieee754/bits/huge_val.h: Likewise.
        * sysdeps/sh/bits/huge_val.h: Likewise.

        * sysdeps/generic/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val.
        * sysdeps/generic/bits/huge_valf.h: New file.
        * sysdeps/generic/bits/huge_vall.h: New file.
        * sysdeps/generic/bits/inf.h: New file.
        * sysdeps/ieee754/bits/huge_valf.h: New file.
        * sysdeps/ieee754/bits/inf.h: New file.
        * sysdeps/i386/bits/huge_val.h: Remove file.
        * sysdeps/i386/bits/huge_vall.h: New file.
        * sysdeps/ia64/bits/huge_val.h: Remove file.
        * sysdeps/ia64/bits/huge_vall.h: New file.
        * sysdeps/ieee754/ldbl-128/bits/huge_vall.h: New file.
        * sysdeps/m68k/bits/huge_val.h: Remove file.
        * sysdeps/m68k/bits/huge_vall.h: New file.
        * sysdeps/s390/bits/huge_val.h: Remove file.
        * sysdeps/sh/sh4/fpu/bits/huge_val.h: Remove file.
        * sysdeps/sparc/bits/huge_vall.h: New file.
        * sysdeps/sparc/sparc32/fpu/bits/huge_val.h: Remove file.
        * sysdeps/sparc/sparc64/fpu/bits/huge_val.h: Remove file.

        * sysdeps/ieee754/bits/nan.h (NAN): Use __builtin_nanf.
        * sysdeps/mips/bits/nan.h (NAN): Likewise.
2004-03-15  Richard Henderson  <rth@redhat.com>

	* math/Makefile (headers): Add bits/huge_valf.h, bits/huge_vall.h,
	and bits/inf.h.
	* math/math.h: Include them.

	* sysdeps/alpha/fpu/bits/mathdef.h, sysdeps/arm/fpu/bits/mathdef.h,
	sysdeps/generic/bits/mathdef.h, sysdeps/i386/fpu/bits/mathdef.h,
	sysdeps/ia64/fpu/bits/mathdef.h, sysdeps/m68k/fpu/bits/mathdef.h,
	sysdeps/mips/fpu/bits/mathdef.h, sysdeps/powerpc/fpu/bits/mathdef.h,
	sysdeps/sh/sh4/fpu/bits/mathdef.h, sysdeps/sparc/fpu/bits/mathdef.h,
	sysdeps/x86_64/fpu/bits/mathdef.h: Remove INFINITY.

	* sysdeps/arm/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val.
	(HUGE_VALF, HUGE_VALL): Remove.
	* sysdeps/ieee754/bits/huge_val.h: Likewise.
	* sysdeps/sh/bits/huge_val.h: Likewise.

	* sysdeps/generic/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val.
	* sysdeps/generic/bits/huge_valf.h: New file.
	* sysdeps/generic/bits/huge_vall.h: New file.
	* sysdeps/generic/bits/inf.h: New file.
	* sysdeps/ieee754/bits/huge_valf.h: New file.
	* sysdeps/ieee754/bits/inf.h: New file.
	* sysdeps/i386/bits/huge_val.h: Remove file.
	* sysdeps/i386/bits/huge_vall.h: New file.
	* sysdeps/ia64/bits/huge_val.h: Remove file.
	* sysdeps/ia64/bits/huge_vall.h: New file.
	* sysdeps/ieee754/ldbl-128/bits/huge_vall.h: New file.
	* sysdeps/m68k/bits/huge_val.h: Remove file.
	* sysdeps/m68k/bits/huge_vall.h: New file.
	* sysdeps/s390/bits/huge_val.h: Remove file.
	* sysdeps/sh/sh4/fpu/bits/huge_val.h: Remove file.
	* sysdeps/sparc/bits/huge_vall.h: New file.
	* sysdeps/sparc/sparc32/fpu/bits/huge_val.h: Remove file.
	* sysdeps/sparc/sparc64/fpu/bits/huge_val.h: Remove file.

	* sysdeps/ieee754/bits/nan.h (NAN): Use __builtin_nanf.
	* sysdeps/mips/bits/nan.h (NAN): Likewise.
2004-03-15 21:44:11 +00:00
Alexandre Oliva e077d10d0d * configure.in: Add mips64* support. * configure: Rebuilt. * sysdeps/mips/bits/endian.h: Make it bi-endian. * sysdeps/mips/mipsel/bits/endian.h: Removed. * sysdeps/mips/mips64/n32/el/bits/endian.h: Removed. * sysdeps/mips/mips64/n64/el/bits/endian.h: Removed. * sysdeps/mips/mips32/Makefile (CC): Add -mabi=32. * sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32. * sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64. * sysdeps/mips/Implies: Moved wordsize-32 to... * sysdeps/mips/mips32/Implies: New file. * sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO, ret_NOERRNO): New. (ret, PSEUDO_END): Moved past END. (PSEUDO): Moved to... * sysdeps/unix/mips/mips32/sysdep.h: New file. * sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO. * sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/mips/sysdep.h: Move to... * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file. * sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file.
* configure.in: Add mips64* support.
	* configure: Rebuilt.
	* sysdeps/mips/bits/endian.h: Make it bi-endian.
	* sysdeps/mips/mipsel/bits/endian.h: Removed.
	* sysdeps/mips/mips64/n32/el/bits/endian.h: Removed.
	* sysdeps/mips/mips64/n64/el/bits/endian.h: Removed.
	* sysdeps/mips/mips32/Makefile (CC): Add -mabi=32.
	* sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32.
	* sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64.
	* sysdeps/mips/Implies: Moved wordsize-32 to...
	* sysdeps/mips/mips32/Implies: New file.
	* sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO,
	ret_NOERRNO): New.
	(ret, PSEUDO_END): Moved past END.
	(PSEUDO): Moved to...
	* sysdeps/unix/mips/mips32/sysdep.h: New file.
	* sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO.
	* sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/sysdep.h: Move to...
	* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file.
	* sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file.
2003-03-29 08:15:29 +00:00
Alexandre Oliva d20152e148 * sysdeps/mips/bits/setjmp.h: n32 has only 6 call-saved fpregs. * sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux): Adjust. * sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise.
* sysdeps/mips/bits/setjmp.h: n32 has only 6 call-saved fpregs.
	* sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux): Adjust.
	* sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise.
2003-03-20 22:29:44 +00:00
Alexandre Oliva 53fcb88501 * sysdeps/mips/bits/setjmp.h: Store all N32 and N64 registers, including pc, gp, sp and fp, as long long. * sysdeps/mips/mips64/setjmp.S: Pass gp to __sigsetjmp_aux. * sysdeps/mips/mips64/setjmp_aux.c: Adjust type of arguments. Add gp argument, and set gp in the jmpbuf to it. * sysdeps/mips/setjmp_aux.c: Revert to o32-only.
2003-03-20  Alexandre Oliva  <aoliva@redhat.com>

	* sysdeps/mips/bits/setjmp.h: Store all N32 and N64 registers,
	including pc, gp, sp and fp, as long long.
	* sysdeps/mips/mips64/setjmp.S: Pass gp to __sigsetjmp_aux.
	* sysdeps/mips/mips64/setjmp_aux.c: Adjust type of arguments.
	Add gp argument, and set gp in the jmpbuf to it.
	* sysdeps/mips/setjmp_aux.c: Revert to o32-only.
2003-03-20 10:27:55 +00:00
Alexandre Oliva 4947b4b20f * sysdeps/mips/bits/wordsize.h: New file, appropriate for all 3 ABIs. * sysdeps/mips/mips64/gmp-mparam.h: New file. Define BITS_PER_LONGINT to __WORDSIZE, to match all 3 ABIs. * sysdeps/mips/setjmp_aux.c (STRINGXP, REGS, PTRS): New macros. (__sigsetjmp_aux): Use them. Adjust for all 3 ABIs. * sysdeps/mips/elf/start.S: Adjust for all 3 ABIs. * sysdeps/unix/mips/brk.S: Likewise. * sysdeps/unix/mips/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/mips/clone.S: Likewise. * sysdeps/mips/bits/setjmp.h (__jmp_buf): Likewise. * sysdeps/mips/sys/ucontext.h: Likewise. * sysdeps/unix/sysv/linux/mips/sys/profcs.h: Likewise. * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise. * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise. * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise. * sysdeps/mips/mips64/bsd-setjmp.S: Likewise. * sysdeps/mips/mips64/setjmp.S: Likewise. * sysdeps/mips/mips64/bits/setjmp.h: Deleted, obsolete. * sysdeps/mips/mips64/soft-fp/sfp-machine.h: Use long long for 64-bit types.
2003-03-17  Alexandre Oliva  <aoliva@redhat.com>

	* sysdeps/mips/bits/wordsize.h: New file, appropriate for all
	3 ABIs.
	* sysdeps/mips/mips64/gmp-mparam.h: New file.  Define
	BITS_PER_LONGINT to __WORDSIZE, to match all 3 ABIs.
	* sysdeps/mips/setjmp_aux.c (STRINGXP, REGS, PTRS): New macros.
	(__sigsetjmp_aux): Use them.  Adjust for all 3 ABIs.
	* sysdeps/mips/elf/start.S: Adjust for all 3 ABIs.
	* sysdeps/unix/mips/brk.S: Likewise.
	* sysdeps/unix/mips/sysdep.S: Likewise.
	* sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
	* sysdeps/mips/bits/setjmp.h (__jmp_buf): Likewise.
	* sysdeps/mips/sys/ucontext.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/sys/profcs.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise.
	* sysdeps/mips/mips64/bsd-_setjmp.S: Likewise.
	* sysdeps/mips/mips64/bsd-setjmp.S: Likewise.
	* sysdeps/mips/mips64/setjmp.S: Likewise.
	* sysdeps/mips/mips64/bits/setjmp.h: Deleted, obsolete.
	* sysdeps/mips/mips64/soft-fp/sfp-machine.h: Use long long for
	64-bit types.
2003-03-17 15:47:13 +00:00
Roland McGrath 3efdabe762 * libio/ftello.c (ftello): Use _IO_off64_t for type of POS.
Check for the result overflowing off_t and fail with EOVERFLOW.
	* libio/ioftell.c (_IO_ftell): Likewise.
	* libio/iofgetpos.c (_IO_new_fgetpos): Likewise.

	* login/logwtmp.c (logwtmp): If sizeof ut_tv != sizeof struct timeval,
	use a temporary timeval on the stack for gettimeofday and copy it.
	* login/logout.c (logout): Likewise.
	Reported by Steven Munroe <sjmunroe@us.ibm.com>.

	* sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs):
	Use __SWORD_TYPE instead of int for member types.
	(struct statfs64): Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/statfs.h: New file.
	* sysdeps/unix/sysv/linux/s390/bits/statfs.h: New file.
	* sysdeps/unix/sysv/linux/ia64/bits/statfs.h: File removed.
	* sysdeps/unix/sysv/linux/sparc/bits/statfs.h: File removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/statfs.h: File removed.

	* sysdeps/unix/sysv/linux/sparc/bits/statvfs.h: Moved to ...
	* sysdeps/unix/sysv/linux/bits/statvfs.h: ... here.
	(ST_NODIRATIME): Restore fixed value of 2048.
	* sysdeps/unix/sysv/linux/alpha/bits/statvfs.h: File removed.
	* sysdeps/unix/sysv/linux/ia64/bits/statvfs.h: File removed.

	Rearranged <bits/types.h> definitions to reduce duplication.
	* sysdeps/generic/bits/types.h: Rewritten, using macros from
	<bits/wordsize.h> and new header <bits/typesizes.h>.
	* posix/Makefile (headers): Add bits/typesizes.h here.
	* sysdeps/generic/bits/typesizes.h: New file.
	* sysdeps/unix/sysv/linux/alpha/bits/typesizes.h: New file.
	* sysdeps/unix/sysv/linux/sparc/bits/typesizes.h: New file.
	* sysdeps/mach/hurd/bits/typesizes.h: New file.
	* sysdeps/unix/sysv/linux/alpha/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/ia64/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/mips/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/s390/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/sparc/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/types.h: File removed.
	* posix/sys/types.h [__USE_POSIX199506 || __USE_UNIX98]: Include
	<bits/pthreadtypes.h> here, not in <bits/types.h>.
	* signal/signal.h: Likewise.

	* streams/stropts.h: Include <bits/xtitypes.h>.
	* streams/Makefile (headers): Add bits/xtitypes.h here.
	* sysdeps/generic/bits/xtitypes.h: New file.
	* sysdeps/s390/bits/xtitypes.h: New file.
	* sysdeps/ia64/bits/xtitypes.h: New file.
	* sysdeps/x86_64/bits/xtitypes.h: New file.

	* sysvipc/Makefile (headers): Add bits/ipctypes.h here.
	* sysdeps/generic/bits/ipctypes.h: New file.
	* sysdeps/mips/bits/ipctypes.h: New file.
	* sysdeps/gnu/bits/shm.h: Include <bits/ipctypes.h>.
	* sysdeps/gnu/bits/msq.h: Likewise.
	* sysvipc/sys/ipc.h: Likewise.

2002-10-22  Roland McGrath  <roland@redhat.com>

	* sysdeps/generic/libc-tls.c (_dl_tls_static_used): New variable.
	* sysdeps/generic/ldsodefs.h (struct rtld_global): New member
	`_dl_tls_static_used'.
	(TLS_STATIC_MIN): New macro.
	* elf/dl-reloc.c [USE_TLS] (allocate_static_tls): New function.
	(CHECK_STATIC_TLS): Use it.
2002-10-23 23:50:19 +00:00
Andreas Jaeger 904e1ba99d Update
* sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h (struct
	_fpstate): Rename fwd to ftw.
	* sysdeps/unix/sysv/linux/x86_64/sys/user.h (struct user_fpregs_struct): Likewise.

	* sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump):
	Follow sigcontext changes.

2002-03-22  Andreas Jaeger  <aj@suse.de>
2002-03-22 12:17:21 +00:00
Ulrich Drepper ca6c73895d Update.
2001-10-26  Ulrich Drepper  <drepper@redhat.com>

	* string/strxfrm.c [USE_IN_EXTENDED_LOCALE_MODEL]: Correctly get
	nrules value.

2001-10-24  H.J. Lu  <hjl@gnu.org>

	* sysdeps/generic/bits/dlfcn.h (DL_CALL_FCT): Cast to void *.
	Use __BEGIN_DECLS/__END_DECLS around prototypes.
	* sysdeps/mips/bits/dlfcn.h (DL_CALL_FCT): Likewise.

2001-10-21  Jim Meyering  <meyering@lucent.com>

	* malloc/obstack.c (_): Honor the setting of ENABLE_NLS.  Otherwise,
	this code would end up calling gettext even in packages built
	with --disable-nls.
	* posix/getopt.c (_): Likewise.
	* posix/regex.c (_): Likewise.

2001-10-26  Ulrich Drepper  <drepper@redhat.com>

	* resolv/gethnamaddr.c (gethostbyaddr): Use ip6.addr for reverse
	lookup not ip6.int.
	* resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Likewise.
	Reported by Martin.v.Loewis@t-online.de [PR libc/2598].

2001-10-19  Jakub Jelinek  <jakub@redhat.com>

	* misc/sys/cdefs.h (__attribute_used__): Define.
	* elf/rtld.c (_dl_start): Add __attribute_used__.
	* elf/dl-runtime.c (fixup, profile_fixup): Likewise.
2001-10-27 00:23:28 +00:00
Andreas Jaeger 41bdb6e20c Update to LGPL v2.1.
2001-07-06  Paul Eggert  <eggert@twinsun.com>

	* manual/argp.texi: Remove ignored LGPL copyright notice; it's
	not appropriate for documentation anyway.
	* manual/libc-texinfo.sh: "Library General Public License" ->
	"Lesser General Public License".

2001-07-06  Andreas Jaeger  <aj@suse.de>

	* All files under GPL/LGPL version 2: Place under LGPL version
	2.1.
2001-07-06 04:58:11 +00:00
Andreas Jaeger 70514a9f51 Update.
2000-09-15  Andreas Jaeger  <aj@suse.de>

	* sysdeps/mips/fpu/fesetenv.c (__fesetenv): Handle FE_NOMASK_ENV.

	* sysdeps/mips/bits/fenv.h (FE_NOMASK_ENV): Define.
2000-09-15 18:16:18 +00:00
Ulrich Drepper 417bafec1e Update.
* stdlib/Makefile (headers): Add bits/wchar.h.
	* sysdeps/unix/sysv/linux/i386/bits/wchar.h: New file.
	* sysdeps/generic/bits/wchar.h: New file.
	* sysdeps/generic/stdint.h: Include <bits/wchar.h>.  Use values in this
	file to define WCHAR_MIN and WCHAR_MAX.
	Change UINT*8_MAX and UIN*16_MAX value to type int.
	* wcsmbs/wchar.h: Include <bits/wchar.h>.  Use values in this
	file to define WCHAR_MIN and WCHAR_MAX.
	* sysdeps/alpha/fpu/bits/mathdef.h: Make FP_ILOGB0 and FP_ILOGBNAN
	int values.
	* sysdeps/arm/fpu/bits/mathdef.h: Likewise.
	* sysdeps/generic/bits/mathdef.h: Likewise.
	* sysdeps/i386/fpu/bits/mathdef.h: Likewise.
	* sysdeps/m68k/fpu/bits/mathdef.h: Likewise.
	* sysdeps/powerpc/fpu/bits/mathdef.h: Likewise.
	* sysdeps/sparc/fpu/bits/mathdef.h: Likewise.
	* locale/locale.h (struct lconv): Add __ prefix to the new members
	if not C99.
	* sysdeps/generic/inttypes.h: Remove unnecessary imaxabs and
	imaxdiv optimizations.
	* sysdeps/wordsize-32/lldiv.c: Add hack to make alias work.
	* sysdeps/wordsize-64/ldiv.c: Likewise.
	* sysdeps/alpha/fpu/bits/fenv.h: Change type of FE_*_ENV macros to
	const fenv_t*.
	* sysdeps/generic/bits/fenv.h: Likewise.
	* sysdeps/i386/fpu/bits/fenv.h: Likewise.
	* sysdeps/ia64/bits/fenv.h: Likewise.
	* sysdeps/m68k/fpu/bits/fenv.h: Likewise.
	* sysdeps/mips/bits/fenv.h: Likewise.
	* sysdeps/s390/fpu/bits/fenv.h: Likewise.
	* sysdeps/sparc/fpu/bits/fenv.h: Likewise.
	Reported by Joseph S. Myers <jsm28@cam.ac.uk>.

	* catgets/open_catalog.c: Likewise.
2000-09-01 06:39:10 +00:00
Ulrich Drepper bf8b3e74bf Update.
* elf/elf.h: Add various DF_1_*, DTF_1_*, and DF_P1_* entries.
	* elf/dl-close.c (_dl_close): Don't close an object if it is marked
	with nodelete.
	* elf/dl-open.c (dl_open_worker): Pass RTLD_NOLOAD as new parameter
	to _dl_map_object.  Return immediately if no object loaded.
	Set DF_1_NODELETE bit in l_flags_1 if RTLD_NODELETE was passed.
	* elf/dynamic-link.h (elf_get_dynamic_info): Copy DT_FLAGS_1 entry
	if it exists into l_flags_1 word.
	* elf/dl-load.c (_dl_map_object_from_fd): Take no parameter and use
	it to determine whether loading is wanted or not.
	(_dl_map_object): Likewise.
	Call _dl_map_object_from_fd with new parameter.
	* sysdeps/generic/ldsodefs.h: Update prototype.
	* elf/dl-deps.c: Add new parameter to _dl_map_object calls.
	* elf/rtld.c: Likewise.
	* elf/Makefile (tests): Add noload.  Add rules to generate noload.
	* elf/noload.c: New file.
	* include/link.h (struct link_map): Add l_feature_1 and l_flags_1.
	* sysdeps/generic/bits/dlfcn.h: Define RTLD_NOLOAD and RTLD_NODELETE.
	* sysdeps/mips/bits/dlfcn.h: Likewise.
2000-07-20 22:53:54 +00:00