glibc/sysdeps/i386/bsd-_setjmp.S

61 lines
2.0 KiB
ArmAsm
Raw Normal View History

1995-02-18 09:27:10 +08:00
/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. i386 version.
Copyright (C) 1994-1997,2000-2002,2005, 2006 Free Software Foundation, Inc.
Update. 1997-03-20 01:49 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/s_tanhl.c (__tanhl): Correct handling of -inf. * Makeconfig: (rpath-link): Add math/ directory. (math-objdir): New variable. (link-extra-lib): Define to special version when $(common-objpfx)!=$(objpfx) to allow libraries outside $(common-objpfx) be linked to the application. * math/Makefile: Add rules to build and run test programs. * math/libm-test.c (_GNU_SOURCE): Define only if still undefined. (check_equal): Correct check for error. (ceil_test): Fix typo. (log_test): Fix typo. (floor_test): Fix typo. (pow_test): Fix typos. (log10_test): Allow slight incorrectness for `log10(e)'. (modf_test): New functions to test `modf' et.al. (hypot_test): Rewrite test completely. Patch partly by Andreas Jaeger. * math/test-double.h (__NO_MATH_INLINES): Define only if not already defined. * math/test-float.h: Likewise. * math/test-logdouble.h: Likewise. * setjmp/setjmp.h: Change references of ANSI C to ISO C. * setjmp/tst-setjmp.c: Correct and extend test suite. * sysdeps/i386/__longjmp.S: Update copyright. * sysdeps/i386/bsd-_setjmp.S: Correct fatal bug in jump to `__sigsetjmp' in PIC code. * sysdeps/i386/bsd-setjmp.S: Likewise. * sysdeps/libm-i387/e_pow.S: Correct recognition of mantissa overflow. * sysdeps/libm-i387/e_powf.S: Likewise. * sysdeps/libm-i387/s_expm1.S: Handle x == +-0 as a special case since expm1(-0) == -0. * sysdeps/libm-i387/s_expm1f.S: Likewise. * sysdeps/libm-i387/s_expm1l.S: Likewise. * sysdeps/libm-ieee754/s_modf.c: Optimize code by avoiding unneeded access to FP number. * sysdeps/libm-ieee754/s_modff.c: Likewise. * sysdeps/libm-ieee754/s_modfl.c: Correct former completely bogus code. It never worked correctly. * sysdeps/libm-ieee754/s_tanh.c: Handle x == +-0 as a special case since tanh(-0) == -0. * sysdeps/libm-ieee754/s_tanhf.c: Likewise. 1997-03-19 21:13 Ulrich Drepper <drepper@cygnus.com> * stdlib/strtod.c (STRTOL): Use wchar_t as type for `decimal' and `thousands' to support systems with sizeof(wchar_t) != sizeof(wint_t). Blargh. * sysdeps/unix/sysv/linux/socketbits.h: Remove definition of SOL_IP, SOL_TCP, SOL_UDP, and SOL_IPX as they are defined in appropriate headers. * sysdeps/unix/sysv/linux/writev.c: Don't use MAX_IOVEC. Test for UIO_FASTIOV and set to 8 if not available. * sysdeps/unix/sysv/linux/readv.c: Likewise. Patch by HJ Lu. * sysdeps/unix/sysv/linux/xstat.c: Include <kernel_stat.h>, not "kernel_stat.h". * sysdeps/unix/sysv/linux/lxstat.c: Likewise. * sysdeps/unix/sysv/linux/fxstat.c: Likewise. Reported by fabsoft@fabsoft2.zarm.uni-bremen.de.
1997-03-20 10:20:57 +08:00
This file is part of the GNU C Library.
1995-02-18 09:27:10 +08:00
Update. 1997-03-20 01:49 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/s_tanhl.c (__tanhl): Correct handling of -inf. * Makeconfig: (rpath-link): Add math/ directory. (math-objdir): New variable. (link-extra-lib): Define to special version when $(common-objpfx)!=$(objpfx) to allow libraries outside $(common-objpfx) be linked to the application. * math/Makefile: Add rules to build and run test programs. * math/libm-test.c (_GNU_SOURCE): Define only if still undefined. (check_equal): Correct check for error. (ceil_test): Fix typo. (log_test): Fix typo. (floor_test): Fix typo. (pow_test): Fix typos. (log10_test): Allow slight incorrectness for `log10(e)'. (modf_test): New functions to test `modf' et.al. (hypot_test): Rewrite test completely. Patch partly by Andreas Jaeger. * math/test-double.h (__NO_MATH_INLINES): Define only if not already defined. * math/test-float.h: Likewise. * math/test-logdouble.h: Likewise. * setjmp/setjmp.h: Change references of ANSI C to ISO C. * setjmp/tst-setjmp.c: Correct and extend test suite. * sysdeps/i386/__longjmp.S: Update copyright. * sysdeps/i386/bsd-_setjmp.S: Correct fatal bug in jump to `__sigsetjmp' in PIC code. * sysdeps/i386/bsd-setjmp.S: Likewise. * sysdeps/libm-i387/e_pow.S: Correct recognition of mantissa overflow. * sysdeps/libm-i387/e_powf.S: Likewise. * sysdeps/libm-i387/s_expm1.S: Handle x == +-0 as a special case since expm1(-0) == -0. * sysdeps/libm-i387/s_expm1f.S: Likewise. * sysdeps/libm-i387/s_expm1l.S: Likewise. * sysdeps/libm-ieee754/s_modf.c: Optimize code by avoiding unneeded access to FP number. * sysdeps/libm-ieee754/s_modff.c: Likewise. * sysdeps/libm-ieee754/s_modfl.c: Correct former completely bogus code. It never worked correctly. * sysdeps/libm-ieee754/s_tanh.c: Handle x == +-0 as a special case since tanh(-0) == -0. * sysdeps/libm-ieee754/s_tanhf.c: Likewise. 1997-03-19 21:13 Ulrich Drepper <drepper@cygnus.com> * stdlib/strtod.c (STRTOL): Use wchar_t as type for `decimal' and `thousands' to support systems with sizeof(wchar_t) != sizeof(wint_t). Blargh. * sysdeps/unix/sysv/linux/socketbits.h: Remove definition of SOL_IP, SOL_TCP, SOL_UDP, and SOL_IPX as they are defined in appropriate headers. * sysdeps/unix/sysv/linux/writev.c: Don't use MAX_IOVEC. Test for UIO_FASTIOV and set to 8 if not available. * sysdeps/unix/sysv/linux/readv.c: Likewise. Patch by HJ Lu. * sysdeps/unix/sysv/linux/xstat.c: Include <kernel_stat.h>, not "kernel_stat.h". * sysdeps/unix/sysv/linux/lxstat.c: Likewise. * sysdeps/unix/sysv/linux/fxstat.c: Likewise. Reported by fabsoft@fabsoft2.zarm.uni-bremen.de.
1997-03-20 10:20:57 +08:00
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
1995-02-18 09:27:10 +08:00
Update. 1997-03-20 01:49 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/s_tanhl.c (__tanhl): Correct handling of -inf. * Makeconfig: (rpath-link): Add math/ directory. (math-objdir): New variable. (link-extra-lib): Define to special version when $(common-objpfx)!=$(objpfx) to allow libraries outside $(common-objpfx) be linked to the application. * math/Makefile: Add rules to build and run test programs. * math/libm-test.c (_GNU_SOURCE): Define only if still undefined. (check_equal): Correct check for error. (ceil_test): Fix typo. (log_test): Fix typo. (floor_test): Fix typo. (pow_test): Fix typos. (log10_test): Allow slight incorrectness for `log10(e)'. (modf_test): New functions to test `modf' et.al. (hypot_test): Rewrite test completely. Patch partly by Andreas Jaeger. * math/test-double.h (__NO_MATH_INLINES): Define only if not already defined. * math/test-float.h: Likewise. * math/test-logdouble.h: Likewise. * setjmp/setjmp.h: Change references of ANSI C to ISO C. * setjmp/tst-setjmp.c: Correct and extend test suite. * sysdeps/i386/__longjmp.S: Update copyright. * sysdeps/i386/bsd-_setjmp.S: Correct fatal bug in jump to `__sigsetjmp' in PIC code. * sysdeps/i386/bsd-setjmp.S: Likewise. * sysdeps/libm-i387/e_pow.S: Correct recognition of mantissa overflow. * sysdeps/libm-i387/e_powf.S: Likewise. * sysdeps/libm-i387/s_expm1.S: Handle x == +-0 as a special case since expm1(-0) == -0. * sysdeps/libm-i387/s_expm1f.S: Likewise. * sysdeps/libm-i387/s_expm1l.S: Likewise. * sysdeps/libm-ieee754/s_modf.c: Optimize code by avoiding unneeded access to FP number. * sysdeps/libm-ieee754/s_modff.c: Likewise. * sysdeps/libm-ieee754/s_modfl.c: Correct former completely bogus code. It never worked correctly. * sysdeps/libm-ieee754/s_tanh.c: Handle x == +-0 as a special case since tanh(-0) == -0. * sysdeps/libm-ieee754/s_tanhf.c: Likewise. 1997-03-19 21:13 Ulrich Drepper <drepper@cygnus.com> * stdlib/strtod.c (STRTOL): Use wchar_t as type for `decimal' and `thousands' to support systems with sizeof(wchar_t) != sizeof(wint_t). Blargh. * sysdeps/unix/sysv/linux/socketbits.h: Remove definition of SOL_IP, SOL_TCP, SOL_UDP, and SOL_IPX as they are defined in appropriate headers. * sysdeps/unix/sysv/linux/writev.c: Don't use MAX_IOVEC. Test for UIO_FASTIOV and set to 8 if not available. * sysdeps/unix/sysv/linux/readv.c: Likewise. Patch by HJ Lu. * sysdeps/unix/sysv/linux/xstat.c: Include <kernel_stat.h>, not "kernel_stat.h". * sysdeps/unix/sysv/linux/lxstat.c: Likewise. * sysdeps/unix/sysv/linux/fxstat.c: Likewise. Reported by fabsoft@fabsoft2.zarm.uni-bremen.de.
1997-03-20 10:20:57 +08:00
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
Lesser General Public License for more details.
1995-02-18 09:27:10 +08:00
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
1995-02-18 09:27:10 +08:00
/* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
We cannot do it in C because it must be a tail-call, so frame-unwinding
in setjmp doesn't clobber the state restored by longjmp. */
#include <sysdep.h>
#include <jmpbuf-offsets.h>
#include "bp-sym.h"
#include "bp-asm.h"
1995-02-18 09:27:10 +08:00
#define PARMS LINKAGE /* no space for saved regs */
#define JMPBUF PARMS
#define SIGMSK JMPBUF+PTR_SIZE
ENTRY (BP_SYM (_setjmp))
ENTER
xorl %eax, %eax
movl JMPBUF(%esp), %edx
CHECK_BOUNDS_BOTH_WIDE (%edx, JMPBUF(%esp), $(JB_SIZE+4))
/* Save registers. */
movl %ebx, (JB_BX*4)(%edx)
movl %esi, (JB_SI*4)(%edx)
movl %edi, (JB_DI*4)(%edx)
leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */
#ifdef PTR_MANGLE
PTR_MANGLE (%ecx)
#endif
movl %ecx, (JB_SP*4)(%edx)
movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */
#ifdef PTR_MANGLE
PTR_MANGLE (%ecx)
#endif
movl %ecx, (JB_PC*4)(%edx)
LEAVE
movl %ebp, (JB_BP*4)(%edx) /* Save caller's frame pointer. */
movl %eax, JB_SIZE(%edx) /* No signal mask set. */
ret
END (BP_SYM (_setjmp))
Update. * io/sys/stat.h [__USE_MISC]: Define __need_timespec for struct stat. * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv): Adjust for nsec resolution changes. (xstat64_conv): Likewise. (xstat32_conv): Likewise. * sysdeps/unix/sysv/linux/kernel_stat.h: Add nsec resolution for struct kernel_stat. * sysdeps/unix/sysv/linux/bits/stat.h: Add nsec resolution for structs stat and stat64. * time/time.h (__timespec_defined): Define for __USE_MISC. 2002-12-31 Ulrich Drepper <drepper@redhat.com> * include/signal.h: Add libc_hidden_proto for __libc_current_sigrtmin and __libc_current_sigrtmax. 2002-12-31 Jakub Jelinek <jakub@redhat.com> * include/errno.h (__errno_location): Add prototype. Use libc_hidden_proto unconditionally. * include/netdb.h (__h_errno_location): Use libc_hidden_proto unconditionally. * include/resolv.h (__res_state): Likewise. * hurd/errno-loc.c (__errno_location): Add libc_hidden_def. * include/sys/socket.h (accept): Add libc_hidden_proto. * include/errno.h (__errno_location): Likewise. * include/netdb.h (__h_errno_location): Likewise. * include/resolv.h (__res_state): Likewise. * include/unistd.h (__lseek): Likewise. * sysdeps/generic/errno-loc.c (__errno_location): Add libc_hidden_def. * sysdeps/generic/herrno-loc.c (__h_errno_location): Likewise. * sysdeps/generic/res-state.c (__res_state): Likewise. * sysdeps/generic/accept.c (accept): Likewise. * sysdeps/generic/lseek.c (__lseek): Likewise. * sysdeps/generic/allocrtsig.c (__libc_current_sigrtmin, __libc_current_sigrtmax): Likewise. * sysdeps/mach/hurd/accept.c (accept): Likewise. * sysdeps/mach/hurd/lseek.c (__lseek): Likewise. * sysdeps/unix/sysv/aix/accept.c (accept): Likewise. * sysdeps/unix/sysv/aix/lseek.c (__lseek): Likewise. * sysdeps/unix/sysv/linux/accept.S (accept): Likewise. * sysdeps/unix/inet/syscalls.list (__GI_accept): New alias to accept. * sysdeps/unix/sysv/linux/alpha/syscalls.list (__GI_accept): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (__GI_accept): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (__GI___lseek): New alias to llseek. (__GI_accept): New alias to accept. * sysdeps/unix/sysv/linux/mips/syscalls.list (__GI_accept): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__GI___lseek): New alias to llseek. (__GI_accept): New alias to accept. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (__GI_accept): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (__GI_accept): Likewise. * sysdeps/unix/syscalls.list (__GI___lseek): New alias to lseek. * sysdeps/alpha/setjmp.S : Use libc_hidden_def(name) instead of strong_alias (name, __GI_name). * sysdeps/arm/bsd-_setjmp.S : Likewise. * sysdeps/hppa/bsd-_setjmp.S : Likewise. * sysdeps/i386/bsd-_setjmp.S : Likewise. * sysdeps/mips/mips64/bsd-_setjmp.S : Likewise. * sysdeps/mips/bsd-_setjmp.S : Likewise. * sysdeps/powerpc/powerpc32/bsd-_setjmp.S : Likewise. * sysdeps/powerpc/powerpc64/setjmp.S : Likewise. * sysdeps/s390/s390-32/elf/setjmp.S : Likewise. * sysdeps/s390/s390-32/bsd-_setjmp.S : Likewise. * sysdeps/s390/s390-64/elf/setjmp.S : Likewise. * sysdeps/s390/s390-64/bsd-_setjmp.S : Likewise. * sysdeps/sh/bsd-_setjmp.S : Likewise. * sysdeps/sparc/sparc32/setjmp.S : Likewise. * sysdeps/unix/arm/fork.S : Likewise. * sysdeps/unix/bsd/hp/m68k/vfork.S : Likewise. * sysdeps/unix/bsd/i386/vfork.S : Likewise. * sysdeps/unix/bsd/osf/alpha/fork.S : Likewise. * sysdeps/unix/bsd/sun/m68k/vfork.S : Likewise. * sysdeps/unix/bsd/ultrix4/mips/vfork.S : Likewise. * sysdeps/unix/bsd/vax/vfork.S : Likewise. * sysdeps/unix/i386/fork.S : Likewise. * sysdeps/unix/mips/fork.S : Likewise. * sysdeps/unix/sparc/fork.S : Likewise. * sysdeps/unix/sparc/vfork.S : Likewise. * sysdeps/unix/sysv/linux/arm/vfork.S : Likewise. * sysdeps/unix/sysv/linux/cris/vfork.S : Likewise. * sysdeps/unix/sysv/linux/i386/vfork.S : Likewise. * sysdeps/unix/sysv/linux/ia64/fork.S : Likewise. * sysdeps/unix/sysv/linux/ia64/setjmp.S : Likewise. * sysdeps/unix/sysv/linux/ia64/vfork.S : Likewise. * sysdeps/unix/sysv/linux/m68k/vfork.S : Likewise. * sysdeps/unix/sysv/linux/sh/vfork.S : Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S : Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S : Likewise. * sysdeps/unix/sysv/linux/sparc/fork.S : Likewise. * sysdeps/unix/sysv/linux/sparc/vfork.S : Likewise. * sysdeps/unix/sysv/linux/x86_64/vfork.S : Likewise. * sysdeps/unix/fork.S : Likewise. * sysdeps/vax/bsd-_setjmp.S : Likewise. * sysdeps/x86_64/bsd-_setjmp.S : Likewise. * sysdeps/unix/sysv/linux/ia64/sysdep.h: Guard against multiple inclusion.
2003-01-01 04:46:11 +08:00
libc_hidden_def (_setjmp)