diff options
| author | Ulrich Drepper <drepper@redhat.com> | 1997-01-01 15:28:18 +0000 |
|---|---|---|
| committer | Ulrich Drepper <drepper@redhat.com> | 1997-01-01 15:28:18 +0000 |
| commit | 6bc31da01b1271826c8feefb5f0efdf22d64061c (patch) | |
| tree | 14aacf79623cde45cda8b839a225609eb4873540 /sysdeps | |
| parent | ea971c878fda0a93a568732ca5a8a36524f77ec2 (diff) | |
| download | glibc-6bc31da01b1271826c8feefb5f0efdf22d64061c.tar.xz glibc-6bc31da01b1271826c8feefb5f0efdf22d64061c.zip | |
update from main archive 970101cvs/libc-970102
Wed Jan 1 15:15:00 1997 Ulrich Drepper <drepper@cygnus.com>
* libio/Makefile (routines): Add fcloseall.
* libio/fcloseall.c: New file.
* libio/stdio.h [__USE_GNU]: Add prototype for fcloseall.
* libio/iofclose.c: Don't close all streams when argument is NULL.
* stdio/Makefile (routines): Add fcloseall.
* stdio/fcloseall.c: New file.
* stdio/stdio.h [__USE_GNU]: Add prototype for fcloseall.
* stdio/fclose.c: Don't close all streams when argument is NULL.
* manual/stdio.texi: Document fcloseall.
* sysdeps/generic/abort.c: Call __fcloseall instead of fclose with
NULL argument.
* socket/sys/un.h (SUN_LEN): Add cast.
* sunrpc/auth_unix.c (authunix_create): Change parameter types
of uid, gid, and aup_gids to uid_t and gid_t respectively.
(authunix_create_default): Likewise.
(authunix_refresh): Correct cast for aup_gids assignment.
* sunrpc/rpc/auth.h (authunix_create): Correct types in declaration.
* sunrpc/rpc/auth_unix.h (struct authunix_parms): Correct field
types to uid_t and gid_t respectively.
(struct short_hand_verf): Likewise.
Reported by Andreas Schwab.
* sysdeps/ieee754/Makefile: New file. Make sure ieee754.h gets
installed.
* sysdeps/ieee754/ieee754.h: Protect against multiple inclusion and
use in C++ programs.
* sysdeps/libm-i387/e_pow.S: New file. Optimized ix87 assembler
version of pow() function.
* sysdeps/libm-i387/e_powf.S: New file. Float version.
* sysdeps/libm-i387/e_powl.S: New file. Long double version.
* sysdeps/libm-i387/s_expm1.S: New file. Optimized ix87 assembler
version of expm1() function.
* sysdeps/libm-i387/s_expm1f.S: New file. Float version.
* sysdeps/libm-i387/s_expm1l.S: New file. Long double version.
* sysdeps/libm-i387/e_exp.S: Optimize handling of +-Inf.
Better handling of computation stack from current NetBSD sources.
* sysdeps/libm-i387/e_expf.S: Likewise.
* sysdeps/libm-i387/e_expl.S: Likewise.
* sysdeps/libm-i387/e_log.S: Use fstp instead of fincstp.
* sysdeps/libm-i387/e_logf.S: Likewise.
* sysdeps/libm-i387/e_logl.S: Likewise.
* sysdeps/libm-i387/e_log10.S: Likewise.
* sysdeps/libm-i387/e_log10f.S: Likewise.
* sysdeps/libm-i387/e_log10l.S: Likewise.
* sysdeps/libm-i387/s_asinh.S: Likewise.
* sysdeps/libm-i387/s_asinhf.S: Likewise.
* sysdeps/libm-i387/s_asinhl.S: Likewise.
* sysdeps/libm-i387/s_significandl.S: Likewise.
* sysdeps/libm-i387/s_ceil.S: Don't create stack frame. Modify
stack pointer directly. Use 32 bit instead of 16 bit operations.
* sysdeps/libm-i387/s_ceilf.S: Likewise.
* sysdeps/libm-i387/s_ceill.S: Likewise.
* sysdeps/libm-i387/s_floor.S: Likewise.
* sysdeps/libm-i387/s_floorf.S: Likewise.
* sysdeps/libm-i387/s_floorl.S: Likewise.
* sysdeps/libm-ieee754/e_coshf.c (huge): Don't declare volatile.
* sysdeps/libm-ieee754/e_expf.c: Likewise.
* sysdeps/libm-ieee754/e_powf.c: Likewise.
From current NetBSD sources.
* sysdeps/libm-ieee754/e_hypot.c (__ieee754_hypot): Don't initialize
`a' and `b' in definition.
* sysdeps/libm-ieee754/e_hypotf.c: Likewise.
* sysdeps/libm-ieee754/e_hypotl.c: New file. Long double
implementation.
* sysdeps/libm-ieee754/e_sinhl.c: New file. Long double
implementation.
* sysdeps/stub/e_hypotl.c: Removed. We have a real version now.
* sysdeps/stub/e_sinhl.c: Removed.
* sysdeps/posix/sigpause.c (__sigpause): Use sigdelset instead of
sigaddset. Reported by Andreas Schwab.
(__default_sigpause): New function. Call __sigpause as BSD version.
Make this the default function by providing alias sigpause.
* sysdeps/stub/sigpause.c (__default_sigpause): New funciton.
Simply fail. Provide alias sigpause.
Wed Jan 1 12:34:54 1997 Ulrich Drepper <drepper@cygnus.com>
* po/es.po: Update for glibc-1.98.
* po/fr.po: Likewise.
* po/sv.po: New file. Swedish translation.
Wed Jan 1 12:18:07 1997 MacGyver <macgyver@tos.net>
* values.h: Fix typos: use SHRT_MAX but SHORT_MAX and SHRT_MIN but
SHORT_MIN.
Tue Dec 24 23:10:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makefile: Replace `stubs.h' by `gnu/stubs.h'.
* features.h: Include <gnu/stubs.h> instead of <stubs.h>.
Tue Dec 24 22:16:55 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makefile (subdirs): Move `elf' last so that librtld.so isn't
relinked in the `make others' pass if an add-on adds something to
libc.
Mon Dec 23 21:23:16 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/abort-instr.h: New File.
Mon Dec 23 21:16:38 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/Makefile ($(subdir)=elf): Define CFLAGS-rtld.c
to prevent warning.
Mon Dec 23 21:14:22 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* resolv/Makefile (subdirs-dirs): Define.
Mon Dec 23 20:56:49 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/gnu/utmpbits.h (struct utmp): Fix padding.
Mon Dec 30 11:05:11 1996 Ulrich Drepper <drepper@cygnus.com>
Update from ADO tzcode1996o.
* time/difftime.c: De-ANSI-declfy. Simplify computation of hibit
according to ADO version.
* time/zic.c: Correct typo is message.
Update from ADO tzdata1996n.
* time/asia: Updated.
* time/australasia: Likewise.
* time/europe: Likewise.
* time/northamerica: Likewise.
* time/southamerica: Likewise.
Diffstat (limited to 'sysdeps')
40 files changed, 1005 insertions, 166 deletions
diff --git a/sysdeps/generic/abort.c b/sysdeps/generic/abort.c index 604eadc4f5..366a543791 100644 --- a/sysdeps/generic/abort.c +++ b/sysdeps/generic/abort.c @@ -90,7 +90,7 @@ abort (void) if (stage == 4) { ++stage; - fclose (NULL); + __fcloseall (); } /* Try again. */ diff --git a/sysdeps/gnu/utmpbits.h b/sysdeps/gnu/utmpbits.h index 9fcc77de6b..de4a830bcc 100644 --- a/sysdeps/gnu/utmpbits.h +++ b/sysdeps/gnu/utmpbits.h @@ -96,7 +96,7 @@ struct utmp long ut_session; /* Session ID, used for windowing. */ struct timeval ut_tv; /* Time entry was made. */ int32_t ut_addr_v6[4]; /* Internet address of remote host. */ - char pad[18]; /* Reserved for future use. */ + char pad[20]; /* Reserved for future use. */ }; /* Backwards compatibility hacks. */ diff --git a/sysdeps/ieee754/Makefile b/sysdeps/ieee754/Makefile new file mode 100644 index 0000000000..3796e728aa --- /dev/null +++ b/sysdeps/ieee754/Makefile @@ -0,0 +1,3 @@ +ifeq ($(subdir),math) +sysdep_headers += ieee754.h +endif diff --git a/sysdeps/ieee754/ieee754.h b/sysdeps/ieee754/ieee754.h index 9e6efe4973..ba40cc7683 100644 --- a/sysdeps/ieee754/ieee754.h +++ b/sysdeps/ieee754/ieee754.h @@ -16,8 +16,15 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef _IEEE754_H + +#define _IEEE754_H 1 +#include <features.h> + #include <endian.h> +__BEGIN_DECLS + union ieee754_float { float f; @@ -153,3 +160,7 @@ union ieee854_long_double }; #define IEEE854_LONG_DOUBLE_BIAS 0x3fff + +__END_DECLS + +#endif /* ieee754.h */ diff --git a/sysdeps/libm-i387/e_exp.S b/sysdeps/libm-i387/e_exp.S index 4505ebd309..3c9d45b746 100644 --- a/sysdeps/libm-i387/e_exp.S +++ b/sysdeps/libm-i387/e_exp.S @@ -5,7 +5,7 @@ #include <machine/asm.h> -RCSID("$NetBSD: e_exp.S,v 1.4 1995/05/08 23:47:04 jtc Exp $") +RCSID("$NetBSD: e_exp.S,v 1.7 1996/07/03 17:31:28 jtc Exp $") /* e^x = 2^(x * log2(e)) */ ENTRY(__ieee754_exp) @@ -16,16 +16,16 @@ ENTRY(__ieee754_exp) -- drepper@cygnus.com. */ fxam /* Is NaN or +-Inf? */ fstsw %ax - sahf - jnc .LnoInfNaN /* No, jump. */ - jp .LisInf /* Is +-Inf, jump. */ -.LnoInfNaN: + movb $0x45, %dh + andb %ah, %dh + cmpb $0x05, %dh + je 1f /* Is +-Inf, jump. */ fldl2e fmulp /* x * log2(e) */ fstl %st(1) frndint /* int(x * log2(e)) */ - fstl %st(2) - fsubrp /* fract(x * log2(e)) */ + fsub %st,%st(1) /* fract(x * log2(e)) */ + fxch f2xm1 /* 2^(fract(x * log2(e))) - 1 */ fld1 faddp /* 2^(fract(x * log2(e))) */ @@ -33,9 +33,8 @@ ENTRY(__ieee754_exp) fstp %st(1) ret -.LisInf: - andb $2, %ah /* Test sign. */ - jz .LpInf /* If positive, jump. */ +1: testl $0x200, %eax /* Test sign. */ + jz 2f /* If positive, jump. */ fldz /* Set result to 0. */ -.LpInf: ret +2: ret END (__ieee754_exp) diff --git a/sysdeps/libm-i387/e_expf.S b/sysdeps/libm-i387/e_expf.S index c8233eba50..cd8dc7f0b9 100644 --- a/sysdeps/libm-i387/e_expf.S +++ b/sysdeps/libm-i387/e_expf.S @@ -17,16 +17,16 @@ ENTRY(__ieee754_expf) -- drepper@cygnus.com. */ fxam /* Is NaN or +-Inf? */ fstsw %ax - sahf - jnc .LnoInfNaN /* No, jump. */ - jp .LisInf /* Is +-Inf, jump. */ -.LnoInfNaN: + movb $0x45, %dh + andb %ah, %dh + cmpb $0x05, %dh + je 1f /* Is +-Inf, jump. */ fldl2e fmulp /* x * log2(e) */ fstl %st(1) frndint /* int(x * log2(e)) */ - fstl %st(2) - fsubrp /* fract(x * log2(e)) */ + fsub %st,%st(1) /* fract(x * log2(e)) */ + fxch f2xm1 /* 2^(fract(x * log2(e))) - 1 */ fld1 faddp /* 2^(fract(x * log2(e))) */ @@ -34,9 +34,8 @@ ENTRY(__ieee754_expf) fstp %st(1) ret -.LisInf: - andb $2, %ah /* Test sign. */ - jz .LpInf /* If positive, jump. */ +1: testl $0x200, %eax /* Test sign. */ + jz 2f /* If positive, jump. */ fldz /* Set result to 0. */ -.LpInf: ret +2: ret END (__ieee754_expf) diff --git a/sysdeps/libm-i387/e_expl.S b/sysdeps/libm-i387/e_expl.S index 9103a923aa..e398a90ef6 100644 --- a/sysdeps/libm-i387/e_expl.S +++ b/sysdeps/libm-i387/e_expl.S @@ -18,16 +18,16 @@ ENTRY(__ieee754_expl) -- drepper@cygnus.com. */ fxam /* Is NaN or +-Inf? */ fstsw %ax - sahf - jnc .LnoInfNaN /* No, jump. */ - jp .LisInf /* Is +-Inf, jump. */ -.LnoInfNaN: + movb $0x45, %dh + andb %ah, %dh + cmpb $0x05, %dh + je 1f /* Is +-Inf, jump. */ fldl2e fmulp /* x * log2(e) */ fstl %st(1) frndint /* int(x * log2(e)) */ - fstl %st(2) - fsubrp /* fract(x * log2(e)) */ + fsub %st,%st(1) /* fract(x * log2(e)) */ + fxch f2xm1 /* 2^(fract(x * log2(e))) - 1 */ fld1 faddp /* 2^(fract(x * log2(e))) */ @@ -35,9 +35,8 @@ ENTRY(__ieee754_expl) fstp %st(1) ret -.LisInf: - andb $2, %ah /* Test sign. */ - jz .LpInf /* If positive, jump. */ +1: testl $0x200, %eax /* Test sign. */ + jz 2f /* If positive, jump. */ fldz /* Set result to 0. */ -.LpInf: ret +2: ret END (__ieee754_expl) diff --git a/sysdeps/libm-i387/e_log.S b/sysdeps/libm-i387/e_log.S index 43d430332c..e7f567d950 100644 --- a/sysdeps/libm-i387/e_log.S +++ b/sysdeps/libm-i387/e_log.S @@ -53,7 +53,7 @@ ENTRY(__ieee754_log) fyl2xp1 // log(x) ret -2: fincstp // x : log(2) +2: fstp %st(0) // x : log(2) fyl2x // log(x) ret END (__ieee754_log) diff --git a/sysdeps/libm-i387/e_log10.S b/sysdeps/libm-i387/e_log10.S index 95efc8f7a2..ecb691b905 100644 --- a/sysdeps/libm-i387/e_log10.S +++ b/sysdeps/libm-i387/e_log10.S @@ -53,7 +53,7 @@ ENTRY(__ieee754_log10) fyl2xp1 // log10(x) ret -2: fincstp // x : log10(2) +2: fstp %st(0) // x : log10(2) fyl2x // log10(x) ret END (__ieee754_log10) diff --git a/sysdeps/libm-i387/e_log10f.S b/sysdeps/libm-i387/e_log10f.S index bddb5011bc..aac58d0293 100644 --- a/sysdeps/libm-i387/e_log10f.S +++ b/sysdeps/libm-i387/e_log10f.S @@ -54,7 +54,7 @@ ENTRY(__ieee754_log10f) fyl2xp1 // log10(x) ret -2: fincstp // x : log10(2) +2: fstp %st(0) // x : log10(2) fyl2x // log10(x) ret END (__ieee754_log10f) diff --git a/sysdeps/libm-i387/e_log10l.S b/sysdeps/libm-i387/e_log10l.S index f0b8f325a7..4f51818bdd 100644 --- a/sysdeps/libm-i387/e_log10l.S +++ b/sysdeps/libm-i387/e_log10l.S @@ -55,7 +55,7 @@ ENTRY(__ieee754_log10l) fyl2xp1 // log10(x) ret -2: fincstp // x : log10(2) +2: fstp %st(0) // x : log10(2) fyl2x // log10(x) ret END(__ieee754_log10l) diff --git a/sysdeps/libm-i387/e_logf.S b/sysdeps/libm-i387/e_logf.S index b79f478cdf..4459b7fc08 100644 --- a/sysdeps/libm-i387/e_logf.S +++ b/sysdeps/libm-i387/e_logf.S @@ -54,7 +54,7 @@ ENTRY(__ieee754_logf) fyl2xp1 // log(x) ret -2: fincstp // x : log(2) +2: fstp %st(0) // x : log(2) fyl2x // log(x) ret END (__ieee754_logf) diff --git a/sysdeps/libm-i387/e_logl.S b/sysdeps/libm-i387/e_logl.S index 1657dfd5fb..08447a27e7 100644 --- a/sysdeps/libm-i387/e_logl.S +++ b/sysdeps/libm-i387/e_logl.S @@ -54,7 +54,7 @@ ENTRY(__ieee754_logl) fyl2xp1 // log(x) ret -2: fincstp // x : log(2) +2: fstp %st(0) // x : log(2) fyl2x // log(x) ret END (__ieee754_logl) diff --git a/sysdeps/libm-i387/e_pow.S b/sysdeps/libm-i387/e_pow.S new file mode 100644 index 0000000000..f6c7562d9c --- /dev/null +++ b/sysdeps/libm-i387/e_pow.S @@ -0,0 +1,120 @@ +/* ix87 specific implementation of pow function. + Copyright (C) 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <machine/asm.h> + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF( |
