From e9b3e3c5ceec61f6af401b122434844321960eec Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 10 Dec 1999 04:37:40 +0000 Subject: Update. 1999-12-09 Andreas Jaeger * nis/nss_compat/compat-pwd.c (internal_getpwuid_r): Always set errno to ENOENT when returning NSS_STATUS_NOTFOUND. Reported by Christian Starkjohann . 1999-12-09 Andreas Jaeger * sysdeps/i386/fpu/libm-test-ulps: Added some ulps. 1999-12-09 Jakub Jelinek * stdlib/longlong.h: Update from latest egcs version. * sysdeps/sparc/fpu/fegetenv.c: Add semicolons. * sysdeps/unix/sysv/linux/bits/errno.h (__errno_location): __THROW has to preceede __attribute__, otherwise g++ barfs. * sysdeps/unix/sysv/linux/sparc/sys/ptrace.h: Make things compile on sparc64-*-linux. * sysdeps/unix/sysv/linux/sparc/sparc64/register-dump.h: Changed to use sigcontext. * sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h: Likewise. 1999-12-05 Wolfram Gloger * malloc/malloc.c (arena_get2): If generating a new arena fails, try to generate a minimal one and hope for mmap_chunk() to succeed later. 1999-11-07 Wolfram Gloger * malloc/thread-m.h [NO_THREADS]: The mutex_* macros now let mutex_t work as an `in-use' flag even without threads. * malloc/malloc.c (USE_ARENAS): New feature flag, controls support for multiple arenas separately from NO_THREADS. (mALLOc, chunk_realloc, mEMALIGn, cALLOc) [USE_ARENAS]: try to fall back to an mmap()ed arena when sbrk() has failed. --- sysdeps/i386/fpu/libm-test-ulps | 2 + sysdeps/sparc/fpu/fegetenv.c | 4 +- sysdeps/unix/sysv/linux/bits/errno.h | 2 +- sysdeps/unix/sysv/linux/i386/Makefile | 2 +- .../unix/sysv/linux/sparc/sparc64/register-dump.h | 185 ++++++++++----------- .../unix/sysv/linux/sparc/sparc64/sigcontextinfo.h | 22 +-- sysdeps/unix/sysv/linux/sparc/sys/ptrace.h | 3 +- 7 files changed, 101 insertions(+), 119 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps index 5f7551ae42..443117da63 100644 --- a/sysdeps/i386/fpu/libm-test-ulps +++ b/sysdeps/i386/fpu/libm-test-ulps @@ -511,6 +511,8 @@ double: 1 idouble: 1 Test "erfc (1.2) == 0.089686021770364619762": float: 1 +double: 1 +idouble: 1 ifloat: 1 Test "erfc (2.0) == 0.0046777349810472658379": double: 1 diff --git a/sysdeps/sparc/fpu/fegetenv.c b/sysdeps/sparc/fpu/fegetenv.c index f526cdd9c5..6a624d373d 100644 --- a/sysdeps/sparc/fpu/fegetenv.c +++ b/sysdeps/sparc/fpu/fegetenv.c @@ -28,5 +28,5 @@ __fegetenv (fenv_t *envp) return 0; } strong_alias (__fegetenv, __old_fegetenv) -symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1) -default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3) +symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1); +default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3); diff --git a/sysdeps/unix/sysv/linux/bits/errno.h b/sysdeps/unix/sysv/linux/bits/errno.h index 697077324e..6bfd44e0cd 100644 --- a/sysdeps/unix/sysv/linux/bits/errno.h +++ b/sysdeps/unix/sysv/linux/bits/errno.h @@ -36,7 +36,7 @@ extern int errno; /* Function to get address of global `errno' variable. */ -extern int *__errno_location (void) __attribute__ ((__const__)) __THROW; +extern int *__errno_location (void) __THROW __attribute__ ((__const__)); # if defined _LIBC /* We wouldn't need a special macro anymore but it is history. */ diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile index ec48acd7e6..a26a27a3d0 100644 --- a/sysdeps/unix/sysv/linux/i386/Makefile +++ b/sysdeps/unix/sysv/linux/i386/Makefile @@ -13,5 +13,5 @@ CFLAGS-initfini.s += -DWEAK_GMON_START endif ifeq ($(subdir),resource) -sysdep_routines += oldgetrlimit oldsetrlimit +sysdep_routines += oldgetrlimit64 oldsetrlimit64 endif diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/register-dump.h b/sysdeps/unix/sysv/linux/sparc/sparc64/register-dump.h index b1184ec889..e21f5f6ca8 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/register-dump.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/register-dump.h @@ -20,7 +20,6 @@ #include #include -#include #include /* We will print the register dump in this format: @@ -63,25 +62,17 @@ hexvalue (unsigned long int value, char *buf, size_t len) *--cp = '0'; } -struct __siginfo_sparc64_fpu -{ - unsigned long si_float_regs[32]; - unsigned long si_xfsr; - unsigned long si_gsr; - unsigned long si_fprs; -}; - static void register_dump (int fd, SIGCONTEXT ctx) { char regs[36][16]; - char fregs[35][8]; + char fregs[68][8]; struct iovec iov[150]; size_t nr = 0; int i; - struct reg_window *r = (struct reg_window *) - ctx->sf_regs.u_regs[14]; - struct __siginfo_sparc64_fpu *f; + unsigned long *r = (unsigned long *) + (ctx->sigc_regs.u_regs[14] + STACK_BIAS); + __siginfo_fpu_t *f; #define ADD_STRING(str) \ iov[nr].iov_base = (char *) str; \ @@ -93,15 +84,15 @@ register_dump (int fd, SIGCONTEXT ctx) ++nr /* Generate strings of register contents. */ - hexvalue (ctx->sf_regs.tstate, regs[0], 16); - hexvalue (ctx->sf_regs.tpc, regs[1], 16); - hexvalue (ctx->sf_regs.tnpc, regs[2], 16); - hexvalue (ctx->sf_regs.y, regs[3], 8); + hexvalue (ctx->sigc_regs.tstate, regs[0], 16); + hexvalue (ctx->sigc_regs.tpc, regs[1], 16); + hexvalue (ctx->sigc_regs.tnpc, regs[2], 16); + hexvalue (ctx->sigc_regs.y, regs[3], 8); for (i = 1; i <= 15; i++) - hexvalue (ctx->sf_regs.u_regs[i], regs[3+i], 16); + hexvalue (ctx->sigc_regs.u_regs[i], regs[3+i], 16); for (i = 0; i <= 15; i++) - hexvalue (r->locals[i], regs[19+i], 16); - hexvalue (ctx->sf_mask, regs[35], 16); + hexvalue (r[i], regs[19+i], 16); + hexvalue (ctx->sigc_mask, regs[35], 16); /* Generate the output. */ ADD_STRING ("Register dump:\n\n TSTATE: "); @@ -177,85 +168,85 @@ register_dump (int fd, SIGCONTEXT ctx) ADD_STRING ("\n\n Mask: "); ADD_MEM (regs[35], 16); - f = *(struct __siginfo_sparc64_fpu **)(ctx + 1); + f = ctx->sigc_fpu_save; if (f != NULL) { - for (i = 0; i < 32; i++) - hexvalue (f->si_float_regs[i], fregs[i], 16); - hexvalue (f->si_xfsr, fregs[32], 16); - hexvalue (f->si_gsr, fregs[33], 2); - hexvalue (f->si_fprs, fregs[34], 1); - ADD_STRING (" XFSR: "); - ADD_MEM (fregs[32], 16); - ADD_STRING (" GSR: "); - ADD_MEM (fregs[33], 2); - ADD_STRING (" FPRS: "); - ADD_MEM (fregs[34], 1); - ADD_STRING ("\n f0: "); - ADD_MEM (fregs[0], 16); - ADD_STRING (" f2: "); - ADD_MEM (fregs[1], 16); - ADD_STRING (" f4: "); - ADD_MEM (fregs[2], 16); - ADD_STRING ("\n f6: "); - ADD_MEM (fregs[3], 16); - ADD_STRING (" f8: "); - ADD_MEM (fregs[4], 16); - ADD_STRING (" f10: "); - ADD_MEM (fregs[5], 16); - ADD_STRING ("\n f12: "); - ADD_MEM (fregs[6], 16); - ADD_STRING (" f14: "); - ADD_MEM (fregs[7], 16); - ADD_STRING (" f16: "); - ADD_MEM (fregs[8], 16); - ADD_STRING ("\n f18: "); - ADD_MEM (fregs[9], 16); - ADD_STRING (" f20: "); - ADD_MEM (fregs[10], 16); - ADD_STRING (" f22: "); - ADD_MEM (fregs[11], 16); - ADD_STRING ("\n f24: "); - ADD_MEM (fregs[12], 16); - ADD_STRING (" f26: "); - ADD_MEM (fregs[13], 16); - ADD_STRING (" f28: "); - ADD_MEM (fregs[14], 16); - ADD_STRING ("\n f30: "); - ADD_MEM (fregs[15], 16); - ADD_STRING (" f32: "); - ADD_MEM (fregs[16], 16); - ADD_STRING (" f34: "); - ADD_MEM (fregs[17], 16); - ADD_STRING ("\n f36: "); - ADD_MEM (fregs[18], 16); - ADD_STRING (" f38: "); - ADD_MEM (fregs[19], 16); - ADD_STRING (" f40: "); - ADD_MEM (fregs[20], 16); - ADD_STRING ("\n f42: "); - ADD_MEM (fregs[21], 16); - ADD_STRING (" f44: "); - ADD_MEM (fregs[22], 16); - ADD_STRING (" f46: "); - ADD_MEM (fregs[23], 16); - ADD_STRING ("\n f48: "); - ADD_MEM (fregs[24], 16); - ADD_STRING (" f50: "); - ADD_MEM (fregs[25], 16); - ADD_STRING (" f52: "); - ADD_MEM (fregs[26], 16); - ADD_STRING ("\n f54: "); - ADD_MEM (fregs[27], 16); - ADD_STRING (" f56: "); - ADD_MEM (fregs[28], 16); - ADD_STRING (" f58: "); - ADD_MEM (fregs[29], 16); - ADD_STRING ("\n f60: "); - ADD_MEM (fregs[30], 16); - ADD_STRING (" f62: "); - ADD_MEM (fregs[31], 16); - } + for (i = 0; i < 64; i++) + hexvalue (f->si_float_regs[i], fregs[i], 8); + hexvalue (f->si_fsr, fregs[64], 16); + hexvalue (f->si_gsr, fregs[66], 2); + hexvalue (f->si_fprs, fregs[67], 1); + ADD_STRING (" XFSR: "); + ADD_MEM (fregs[64], 16); + ADD_STRING (" GSR: "); + ADD_MEM (fregs[66], 2); + ADD_STRING (" FPRS: "); + ADD_MEM (fregs[67], 1); + ADD_STRING ("\n f0: "); + ADD_MEM (fregs[0], 16); + ADD_STRING (" f2: "); + ADD_MEM (fregs[2], 16); + ADD_STRING (" f4: "); + ADD_MEM (fregs[4], 16); + ADD_STRING ("\n f6: "); + ADD_MEM (fregs[6], 16); + ADD_STRING (" f8: "); + ADD_MEM (fregs[8], 16); + ADD_STRING (" f10: "); + ADD_MEM (fregs[10], 16); + ADD_STRING ("\n f12: "); + ADD_MEM (fregs[12], 16); + ADD_STRING (" f14: "); + ADD_MEM (fregs[14], 16); + ADD_STRING (" f16: "); + ADD_MEM (fregs[16], 16); + ADD_STRING ("\n f18: "); + ADD_MEM (fregs[18], 16); + ADD_STRING (" f20: "); + ADD_MEM (fregs[20], 16); + ADD_STRING (" f22: "); + ADD_MEM (fregs[22], 16); + ADD_STRING ("\n f24: "); + ADD_MEM (fregs[24], 16); + ADD_STRING (" f26: "); + ADD_MEM (fregs[26], 16); + ADD_STRING (" f28: "); + ADD_MEM (fregs[28], 16); + ADD_STRING ("\n f30: "); + ADD_MEM (fregs[30], 16); + ADD_STRING (" f32: "); + ADD_MEM (fregs[32], 16); + ADD_STRING (" f34: "); + ADD_MEM (fregs[34], 16); + ADD_STRING ("\n f36: "); + ADD_MEM (fregs[36], 16); + ADD_STRING (" f38: "); + ADD_MEM (fregs[38], 16); + ADD_STRING (" f40: "); + ADD_MEM (fregs[40], 16); + ADD_STRING ("\n f42: "); + ADD_MEM (fregs[42], 16); + ADD_STRING (" f44: "); + ADD_MEM (fregs[44], 16); + ADD_STRING (" f46: "); + ADD_MEM (fregs[46], 16); + ADD_STRING ("\n f48: "); + ADD_MEM (fregs[48], 16); + ADD_STRING (" f50: "); + ADD_MEM (fregs[50], 16); + ADD_STRING (" f52: "); + ADD_MEM (fregs[52], 16); + ADD_STRING ("\n f54: "); + ADD_MEM (fregs[54], 16); + ADD_STRING (" f56: "); + ADD_MEM (fregs[56], 16); + ADD_STRING (" f58: "); + ADD_MEM (fregs[58], 16); + ADD_STRING ("\n f60: "); + ADD_MEM (fregs[60], 16); + ADD_STRING (" f62: "); + ADD_MEM (fregs[62], 16); + } ADD_STRING ("\n"); diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h index 40e365df4b..2bb563cc81 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h @@ -17,26 +17,14 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -struct __rt_signal_frame { - siginfo_t sf_info; - struct pt_regs sf_regs; - __siginfo_fpu_t *fpu_save; - struct { - void *ss_sp; - int ss_flags; - size_t ss_size; - } sf_stack; - unsigned long sf_mask; -}; - #ifndef STACK_BIAS #define STACK_BIAS 2047 #endif -#define SIGCONTEXT struct __rt_signal_frame * +#define SIGCONTEXT struct sigcontext * #define SIGCONTEXT_EXTRA_ARGS -#define GET_PC(__ctx) ((void *) ((__ctx)->sf_regs.tpc)) +#define GET_PC(__ctx) ((void *) ((__ctx)->sigc_regs.tpc)) #define ADVANCE_STACK_FRAME(__next) \ - ((void *) &((struct reg_window *) (((unsigned long int) (__next)) \ - + STACK_BIAS))->ins[6]) -#define GET_STACK(__ctx) ((void *) ((__ctx)->sf_regs.u_regs[14])) + ((void *) (((unsigned long *) (((unsigned long int) (__next)) \ + + STACK_BIAS))+14)) +#define GET_STACK(__ctx) ((void *) ((__ctx)->sigc_regs.u_regs[14])) #define GET_FRAME(__ctx) ADVANCE_STACK_FRAME (GET_STACK (__ctx)) diff --git a/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h b/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h index 685340a89e..b980e93ae0 100644 --- a/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h +++ b/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h @@ -150,6 +150,7 @@ enum __ptrace_request #if __WORDSIZE == 64 + , /* Get all floating point registers used by a processes. This is not supported on all machines. */ PTRACE_GETFPREGS = 25, @@ -157,7 +158,7 @@ enum __ptrace_request /* Set all floating point registers used by a processes. This is not supported on all machines. */ - PTRACE_SETFPREGS = 26, + PTRACE_SETFPREGS = 26 #define PT_SETFPREGS PTRACE_SETFPREGS #endif -- cgit v1.2.3