From ac16e90592f0b9842e193e2ebe0b3756f0b4361d Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 6 Mar 1998 11:39:36 +0000 Subject: Update. 1998-03-06 11:35 Ulrich Drepper * posix/wordexp-test.c: Change testsuite so that it can run even for ~root != /root. 1998-03-06 Andreas Jaeger * math/libm-test.c (catanh_test): Change epsilon for gcc 2.8.1. 1998-03-05 Andreas Schwab * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER): Don't store into global errno if we already store through __errno_location. * sysdeps/unix/i386/sysdep.S: Likewise. * sysdeps/unix/alpha/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/brk.S: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise. Add missing return to SYSCALL_ERROR_HANDLER for (!_LIBC_REENTRANT && PIC). 1998-03-05 Andreas Schwab * sysdeps/generic/sysdep.h (L): Remove definition. * sysdeps/i386/sysdep.h (L): Define it here instead. 1998-03-05 Thorsten Kukuk * nss/getXXbyYY_r.c: Check __nss_not_use_nscd_* variable for running nscd. * nscd/nscd_getgr_r.c: Set __nss_not_use_nscd_group variable. * nscd/nscd_getpw_r.c: Set __nss_not_use_nscd_passwd variable. * nscd/nscd_proto.h: Declare __nss_not_use_nscd_* variables. --- sysdeps/unix/alpha/sysdep.S | 3 --- sysdeps/unix/i386/sysdep.S | 6 +++--- sysdeps/unix/sysv/linux/i386/sysdep.h | 2 -- sysdeps/unix/sysv/linux/sparc/sparc64/brk.S | 6 ++++-- sysdeps/unix/sysv/linux/sparc/sparc64/clone.S | 3 ++- sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h | 19 +++---------------- 6 files changed, 12 insertions(+), 27 deletions(-) (limited to 'sysdeps/unix') diff --git a/sysdeps/unix/alpha/sysdep.S b/sysdeps/unix/alpha/sysdep.S index d79c48a9bf..53fc454eb6 100644 --- a/sysdeps/unix/alpha/sysdep.S +++ b/sysdeps/unix/alpha/sysdep.S @@ -48,9 +48,6 @@ __syscall_error: .mask 0x4000001, -16 .prologue 1 - /* Store into the "real" variable. */ - stl v0, errno - /* Find our per-thread errno address */ jsr ra, __errno_location diff --git a/sysdeps/unix/i386/sysdep.S b/sysdeps/unix/i386/sysdep.S index b296bb707a..ff1fc0f431 100644 --- a/sysdeps/unix/i386/sysdep.S +++ b/sysdeps/unix/i386/sysdep.S @@ -39,8 +39,9 @@ syscall_error: notb: #endif #ifndef PIC +#ifndef _LIBC_REENTRANT movl %eax, C_SYMBOL_NAME(errno) -#ifdef _LIBC_REENTRANT +#else pushl %eax call __errno_location popl %ecx @@ -49,14 +50,13 @@ notb: #else /* The caller has pushed %ebx and then set it up to point to the GOT before calling us through the PLT. */ +#ifndef _LIBC_REENTRANT movl C_SYMBOL_NAME(errno@GOT)(%ebx), %ecx -#ifndef _LIBC_REENTRANT /* Pop %ebx value saved before jumping here. */ popl %ebx movl %eax, (%ecx) #else - movl %eax, (%ecx) pushl %eax call C_SYMBOL_NAME(__errno_location@PLT) popl %ecx diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index 4ebcc6c852..713bd44524 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -74,8 +74,6 @@ syscall_error: \ xorl %edx, %edx; \ addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %ebx; \ subl %eax, %edx; \ - movl errno@GOT(%ebx), %ecx; \ - movl %edx, (%ecx); \ pushl %edx; \ call __errno_location@PLT; \ popl %ecx; \ diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/brk.S b/sysdeps/unix/sysv/linux/sparc/sparc64/brk.S index abdd7e6604..333f9916f8 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/brk.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/brk.S @@ -75,7 +75,9 @@ ENTRY(__brk) /* What a horrible way to die. */ .Lerr0: set ENOMEM, %o0 -.Lerr1: sethi %hi(errno), %g1 +.Lerr1: +#ifndef _LIBC_REENTRANT + sethi %hi(errno), %g1 or %g1, %lo(errno), %g1 #ifdef PIC ldx [%l7+%g1], %g1 @@ -83,7 +85,7 @@ ENTRY(__brk) #else st %o0, [%g4+%g1] #endif -#ifdef _LIBC_REENTRANT +#else call __errno_location mov %o0,%l1 st %l1, [%o0] diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S index a5cb1a4c4a..a16f9b7c9b 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S @@ -53,6 +53,7 @@ __libc_clone: ret restore 99: +#ifndef _LIBC_REENTRANT #ifdef PIC call 1f sethi %hi(_GLOBAL_OFFSET_TABLE_-(99b-.)), %l7 @@ -68,7 +69,7 @@ __libc_clone: set EINVAL, %i0 st %i0, [%g2+%lo(errno)] #endif -#ifdef _LIBC_REENTRANT +#else call __errno_location nop st %i0, [%o0] diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h index c880e4a2dc..1a3736201c 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h @@ -46,17 +46,7 @@ #ifdef PIC # ifdef _LIBC_REENTRANT # define SYSCALL_ERROR_HANDLER \ - .global C_SYMBOL_NAME(errno); \ - .type C_SYMBOL_NAME(errno),@object; \ save %sp,-160,%sp; \ - 101: call 102f; \ - sethi %hi(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \ - 102: or %g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \ - sethi %hi(errno),%i1; \ - add %g2,%o7,%l7; \ - or %i1,%lo(errno),%i1; \ - ldx [%l7+%i1],%g2; \ - st %i0,[%g2]; \ call __errno_location; \ nop; \ st %i0,[%o0]; \ @@ -76,17 +66,14 @@ or %o1,%lo(errno),%o1; \ mov %g3,%o7; \ ldx [%l7+%o1],%g2; \ - st %o0,[%g2] + st %o0,[%g2]; \ + retl; \ + sub %g0,1,%i0 # endif #else # ifdef _LIBC_REENTRANT # define SYSCALL_ERROR_HANDLER \ - .global C_SYMBOL_NAME(errno); \ - .type C_SYMBOL_NAME(errno),@object; \ save %sp,-160,%sp; \ - sethi %hi(errno),%g1; \ - or %g1,%lo(errno),%g1; \ - st %i0,[%g1+%g4]; \ call __errno_location; \ nop; \ st %i0,[%o0]; \ -- cgit 1.4.1