mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Update.
2002-12-28 Ulrich Drepper <drepper@redhat.com> * descr.h (struct pthread): Move header.data.list to the back of the struct. * sysdeps/i386/tls.h (tcbhead_t): Move list to the back of the struct. (MULTIPLE_THREADS_OFFSET): Adjust offset. (SYSINFO_OFFSEET): Likewise. 2002-12-27 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h (USE_DL_SYSINFO): Define. (DL_SYSINFO_DEFAULT): Cast to uintptr_t to avoid warnings. * sysdeps/unix/sysv/linux/i386/dl-sysdep.h (NEED_DL_SYSINFO, DL_SYSINFO_DEFAULT, DL_SYSINFO_IMPLEMENTATION): Define. (USE_DL_SYSINFO): Undef. 2002-12-22 Jakub Jelinek <jakub@redhat.com> * Makefile (tests-reverse): Use $(objpfx)../libc.so instead of $(common-objpfx)libc.so. * tst-cancel4.c (tf_write, tf_writev): Increase buf sizes so that it is bigger than pipe buffer size even on arches with bigger page size. (tf_usleep): Cast usleep argument to useconds_t to avoid warnings.
This commit is contained in:
@ -18,19 +18,19 @@
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.globl __libc_pipe
|
||||
ENTRY (__libc_pipe)
|
||||
mov %o0, %o2 /* Save PIPEDES. */
|
||||
mov SYS_ify(pipe),%g1
|
||||
ta 0x10
|
||||
bcc,a 2f
|
||||
nop
|
||||
SYSCALL_ERROR_HANDLER
|
||||
2:
|
||||
bcs __syscall_error_handler
|
||||
nop
|
||||
st %o0, [%o2] /* PIPEDES[0] = %o0; */
|
||||
st %o1, [%o2 + 4] /* PIPEDES[1] = %o1; */
|
||||
retl
|
||||
clr %o0
|
||||
clr %o0
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
PSEUDO_END (__libc_pipe)
|
||||
weak_alias (__libc_pipe, __pipe)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
|
||||
|
||||
@ -67,13 +67,12 @@ ENTRY (__socket)
|
||||
add %sp, 68, %o1 /* arg 2: parameter block */
|
||||
LOADSYSCALL(socketcall)
|
||||
t 0x10
|
||||
|
||||
bcs,a 1f
|
||||
bcs __syscall_error_handler
|
||||
nop
|
||||
retl
|
||||
nop
|
||||
|
||||
1: SYSCALL_ERROR_HANDLER
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END (__socket)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991, 1992, 1997, 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -19,23 +19,17 @@
|
||||
#include <sysdep.h>
|
||||
.text
|
||||
ENTRY (syscall)
|
||||
or %o0,%g0,%g1
|
||||
or %o1,%g0,%o0
|
||||
or %o2,%g0,%o1
|
||||
or %o3,%g0,%o2
|
||||
or %o4,%g0,%o3
|
||||
or %o5,%g0,%o4
|
||||
mov %o0, %g1
|
||||
mov %o1, %o0
|
||||
mov %o2, %o1
|
||||
mov %o3, %o2
|
||||
mov %o4, %o3
|
||||
mov %o5, %o4
|
||||
ta 0x10
|
||||
bcc 1f
|
||||
nop
|
||||
save %sp, -96, %sp
|
||||
call __errno_location
|
||||
nop
|
||||
st %i0,[%o0]
|
||||
restore
|
||||
bcs __syscall_error_handler
|
||||
nop
|
||||
retl
|
||||
mov -1, %o0
|
||||
1:
|
||||
ret
|
||||
nop
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
PSEUDO_END (syscall)
|
||||
|
@ -31,11 +31,7 @@
|
||||
|
||||
#ifdef __ASSEMBLER__
|
||||
|
||||
#ifdef DONT_LOAD_G1
|
||||
# define LOADSYSCALL(x)
|
||||
#else
|
||||
# define LOADSYSCALL(x) mov __NR_##x, %g1
|
||||
#endif
|
||||
#define LOADSYSCALL(x) mov __NR_##x, %g1
|
||||
|
||||
/* Linux/SPARC uses a different trap number */
|
||||
#undef PSEUDO
|
||||
@ -54,6 +50,21 @@
|
||||
|
||||
#define LOC(name) .L##name
|
||||
|
||||
#ifdef LINKER_HANDLES_R_SPARC_WDISP22
|
||||
/* Unfortunately, we cannot do this yet. Linker doesn't seem to
|
||||
handle R_SPARC_WDISP22 against non-STB_LOCAL symbols properly . */
|
||||
# define SYSCALL_ERROR_HANDLER_ENTRY(handler) \
|
||||
.section .gnu.linkonce.t.handler,"ax",@progbits; \
|
||||
.globl handler; \
|
||||
.hidden handler; \
|
||||
.type handler,@function; \
|
||||
handler:
|
||||
#else
|
||||
# define SYSCALL_ERROR_HANDLER_ENTRY(handler) \
|
||||
.subsection 3; \
|
||||
handler:
|
||||
#endif
|
||||
|
||||
#if RTLD_PRIVATE_ERRNO
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
.section .gnu.linkonce.t.__sparc.get_pic.l7,"ax",@progbits; \
|
||||
@ -64,6 +75,7 @@ __sparc.get_pic.l7: \
|
||||
retl; \
|
||||
add %o7, %l7, %l7; \
|
||||
.previous; \
|
||||
SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
|
||||
save %sp,-96,%sp; \
|
||||
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; \
|
||||
call __sparc.get_pic.l7; \
|
||||
@ -71,17 +83,20 @@ __sparc.get_pic.l7: \
|
||||
ld [%l7 + errno], %l0; \
|
||||
st %i0, [%l0]; \
|
||||
jmpl %i7+8, %g0; \
|
||||
restore %g0, -1, %o0;
|
||||
restore %g0, -1, %o0; \
|
||||
.previous;
|
||||
#else
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
.global __errno_location; \
|
||||
.type __errno_location,@function; \
|
||||
save %sp, -96, %sp; \
|
||||
call __errno_location; \
|
||||
nop; \
|
||||
st %i0, [%o0]; \
|
||||
jmpl %i7+8, %g0; \
|
||||
restore %g0, -1, %o0;
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
|
||||
.global __errno_location; \
|
||||
.type __errno_location,@function; \
|
||||
save %sp, -96, %sp; \
|
||||
call __errno_location; \
|
||||
nop; \
|
||||
st %i0, [%o0]; \
|
||||
jmpl %i7+8, %g0; \
|
||||
restore %g0, -1, %o0; \
|
||||
.previous;
|
||||
#endif
|
||||
|
||||
#define PSEUDO(name, syscall_name, args) \
|
||||
@ -89,10 +104,9 @@ __sparc.get_pic.l7: \
|
||||
ENTRY(name); \
|
||||
LOADSYSCALL(syscall_name); \
|
||||
ta 0x10; \
|
||||
bcc,a 9000f; \
|
||||
nop; \
|
||||
SYSCALL_ERROR_HANDLER; \
|
||||
9000:;
|
||||
bcs __syscall_error_handler; \
|
||||
nop; \
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
#else /* __ASSEMBLER__ */
|
||||
|
||||
|
@ -23,14 +23,13 @@ ENTRY (__libc_pipe)
|
||||
mov %o0, %o2 /* Save PIPEDES. */
|
||||
LOADSYSCALL(pipe)
|
||||
ta 0x6d
|
||||
bcc,pt %xcc, 2f
|
||||
bcs,pn %xcc, __syscall_error_handler
|
||||
nop
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
2: st %o0, [%o2] /* PIPEDES[0] = %o0; */
|
||||
st %o0, [%o2] /* PIPEDES[0] = %o0; */
|
||||
st %o1, [%o2 + 4] /* PIPEDES[1] = %o1; */
|
||||
retl
|
||||
clr %o0
|
||||
SYSCALL_ERROR_HANDLER
|
||||
PSEUDO_END (__libc_pipe)
|
||||
|
||||
weak_alias (__libc_pipe, __pipe)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
|
||||
|
||||
@ -68,12 +68,12 @@ ENTRY (__socket)
|
||||
LOADSYSCALL(socketcall)
|
||||
ta 0x6d
|
||||
|
||||
bcs,pn %xcc, 1f
|
||||
bcs,pn %xcc, __syscall_error_handler
|
||||
nop
|
||||
retl
|
||||
nop
|
||||
|
||||
1: SYSCALL_ERROR_HANDLER
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END (__socket)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997, 1999, 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -30,11 +30,11 @@ ENTRY (syscall)
|
||||
|
||||
ta 0x6d
|
||||
|
||||
bcc,pt %xcc,1f
|
||||
bcs,pn %xcc,__syscall_error_handler
|
||||
nop
|
||||
retl
|
||||
nop
|
||||
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
1: retl
|
||||
nop
|
||||
|
||||
PSEUDO_END (syscall)
|
||||
|
@ -31,11 +31,7 @@
|
||||
|
||||
#ifdef __ASSEMBLER__
|
||||
|
||||
#ifdef DONT_LOAD_G1
|
||||
# define LOADSYSCALL(x)
|
||||
#else
|
||||
# define LOADSYSCALL(x) mov __NR_##x, %g1
|
||||
#endif
|
||||
#define LOADSYSCALL(x) mov __NR_##x, %g1
|
||||
|
||||
/* Linux/SPARC uses a different trap number */
|
||||
#undef PSEUDO
|
||||
@ -47,6 +43,21 @@
|
||||
C_LABEL(name); \
|
||||
.type name,@function;
|
||||
|
||||
#ifdef LINKER_HANDLES_R_SPARC_WDISP22
|
||||
/* Unfortunately, we cannot do this yet. Linker doesn't seem to
|
||||
handle R_SPARC_WDISP22 against non-STB_LOCAL symbols properly . */
|
||||
# define SYSCALL_ERROR_HANDLER_ENTRY(handler) \
|
||||
.section .gnu.linkonce.t.handler,"ax",@progbits; \
|
||||
.globl handler; \
|
||||
.hidden handler; \
|
||||
.type handler,@function; \
|
||||
handler:
|
||||
#else
|
||||
# define SYSCALL_ERROR_HANDLER_ENTRY(handler) \
|
||||
.subsection 3; \
|
||||
handler:
|
||||
#endif
|
||||
|
||||
#if RTLD_PRIVATE_ERRNO
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
.section .gnu.linkonce.t.__sparc64.get_pic.l7,"ax",@progbits; \
|
||||
@ -57,6 +68,7 @@ __sparc64.get_pic.l7: \
|
||||
retl; \
|
||||
add %o7, %l7, %l7; \
|
||||
.previous; \
|
||||
SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
|
||||
save %sp, -192, %sp; \
|
||||
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; \
|
||||
call __sparc64.get_pic.l7; \
|
||||
@ -64,17 +76,20 @@ __sparc64.get_pic.l7: \
|
||||
ldx [%l7 + errno], %l0; \
|
||||
st %i0, [%l0]; \
|
||||
jmpl %i7+8, %g0; \
|
||||
restore %g0, -1, %o0;
|
||||
restore %g0, -1, %o0; \
|
||||
.previous;
|
||||
#else
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
.global __errno_location; \
|
||||
.type __errno_location,@function; \
|
||||
save %sp, -192, %sp; \
|
||||
call __errno_location; \
|
||||
nop; \
|
||||
st %i0, [%o0]; \
|
||||
jmpl %i7+8, %g0; \
|
||||
restore %g0, -1, %o0;
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
|
||||
.global __errno_location; \
|
||||
.type __errno_location,@function; \
|
||||
save %sp, -192, %sp; \
|
||||
call __errno_location; \
|
||||
nop; \
|
||||
st %i0, [%o0]; \
|
||||
jmpl %i7+8, %g0; \
|
||||
restore %g0, -1, %o0; \
|
||||
.previous;
|
||||
#endif
|
||||
|
||||
#define PSEUDO(name, syscall_name, args) \
|
||||
@ -82,10 +97,9 @@ __sparc64.get_pic.l7: \
|
||||
ENTRY(name); \
|
||||
LOADSYSCALL(syscall_name); \
|
||||
ta 0x6d; \
|
||||
bcc,pt %xcc, 1f; \
|
||||
bcs,pn %xcc, __syscall_error_handler; \
|
||||
nop; \
|
||||
SYSCALL_ERROR_HANDLER; \
|
||||
1:
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
#undef PSEUDO_END
|
||||
#define PSEUDO_END(name) \
|
||||
|
Reference in New Issue
Block a user