mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Update.
2003-03-23 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/make-syscalls.sh: Recognize 'E' in first position of the parameter description to denote no error checking. Generate appropriate pseudo asm code. * sysdeps/unix/syscalls.list: Mark getgid, getpid, getuid with 'E'. * sysdeps/unix/sysv/linux/syscalls.list: Mark getegid, geteuid, getpgrp, and getppid with 'E'. * sysdeps/powerpc/powerpc32/sysdep.h: Define PSEUDO_NOERRNO, PSEUDO_END_NOERRNO, and ret_NOERRNO. * sysdeps/powerpc/powerpc64/sysdep.h: Likewise. * sysdeps/unix/sysdep.h: Likewise. * sysdeps/unix/alpha/sysdep.h: Likewise. * sysdeps/unix/sparc/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/cris/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/hppa/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
This commit is contained in:
26
ChangeLog
26
ChangeLog
@ -1,3 +1,29 @@
|
|||||||
|
2003-03-23 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/make-syscalls.sh: Recognize 'E' in first position of
|
||||||
|
the parameter description to denote no error checking. Generate
|
||||||
|
appropriate pseudo asm code.
|
||||||
|
* sysdeps/unix/syscalls.list: Mark getgid, getpid, getuid with 'E'.
|
||||||
|
* sysdeps/unix/sysv/linux/syscalls.list: Mark getegid, geteuid,
|
||||||
|
getpgrp, and getppid with 'E'.
|
||||||
|
* sysdeps/powerpc/powerpc32/sysdep.h: Define PSEUDO_NOERRNO,
|
||||||
|
PSEUDO_END_NOERRNO, and ret_NOERRNO.
|
||||||
|
* sysdeps/powerpc/powerpc64/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/alpha/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sparc/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/cris/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/hppa/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
|
||||||
|
|
||||||
2003-03-23 Roland McGrath <roland@redhat.com>
|
2003-03-23 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* Makeconfig (+includes): Don't use $(last-includes).
|
* Makeconfig (+includes): Don't use $(last-includes).
|
||||||
|
@ -131,6 +131,19 @@
|
|||||||
#define PSEUDO_END(name) \
|
#define PSEUDO_END(name) \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.section ".text"; \
|
||||||
|
ENTRY (name) \
|
||||||
|
DO_CALL (SYS_ify (syscall_name));
|
||||||
|
|
||||||
|
#define PSEUDO_RET_NOERRNO \
|
||||||
|
blr
|
||||||
|
#define ret_NOERRNO PSEUDO_RET_NOERRNO
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
/* Local labels stripped out by the linker. */
|
/* Local labels stripped out by the linker. */
|
||||||
#undef L
|
#undef L
|
||||||
#define L(x) .L##x
|
#define L(x) .L##x
|
||||||
|
@ -225,6 +225,20 @@ LT_LABELSUFFIX(name,_name_end): ; \
|
|||||||
#define PSEUDO_END(name) \
|
#define PSEUDO_END(name) \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.section ".text"; \
|
||||||
|
ENTRY (name) \
|
||||||
|
DO_CALL (SYS_ify (syscall_name));
|
||||||
|
|
||||||
|
#define PSEUDO_RET_NOERRNO \
|
||||||
|
blr
|
||||||
|
|
||||||
|
#define ret_NOERRNO PSEUDO_RET_NOERRNO
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
/* Label in text section. */
|
/* Label in text section. */
|
||||||
/* ppc64 function descriptors which requires . notation */
|
/* ppc64 function descriptors which requires . notation */
|
||||||
#define C_TEXT(name) .##name
|
#define C_TEXT(name) .##name
|
||||||
|
@ -119,6 +119,21 @@ $syscall_error: \
|
|||||||
END(sym)
|
END(sym)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.globl name; \
|
||||||
|
.align 4; \
|
||||||
|
.ent name,0; \
|
||||||
|
__LABEL(name) \
|
||||||
|
PSEUDO_PROLOGUE; \
|
||||||
|
PSEUDO_PREPARE_ARGS \
|
||||||
|
lda v0, SYS_ify(syscall_name); \
|
||||||
|
call_pal PAL_callsys;
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(sym) END(sym)
|
||||||
|
|
||||||
|
#define ret_NOERRNO ret
|
||||||
|
|
||||||
#define r0 v0
|
#define r0 v0
|
||||||
#define r1 a4
|
#define r1 a4
|
||||||
|
|
||||||
@ -167,8 +182,8 @@ $syscall_error: \
|
|||||||
/* If TLS is in use, we have a conflict between the PAL_rduniq primitive,
|
/* If TLS is in use, we have a conflict between the PAL_rduniq primitive,
|
||||||
as modeled within GCC, and explicit use of the R0 register. If we use
|
as modeled within GCC, and explicit use of the R0 register. If we use
|
||||||
the register via the asm, the scheduler may place the PAL_rduniq insn
|
the register via the asm, the scheduler may place the PAL_rduniq insn
|
||||||
before we've copied the data from R0 into _sc_ret. If this happens
|
before we've copied the data from R0 into _sc_ret. If this happens
|
||||||
we'll get a reload abort, since R0 is live at the same time it is
|
we'll get a reload abort, since R0 is live at the same time it is
|
||||||
needed for the PAL_rduniq.
|
needed for the PAL_rduniq.
|
||||||
|
|
||||||
Solve this by using the "v" constraint instead of an asm for the syscall
|
Solve this by using the "v" constraint instead of an asm for the syscall
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1993, 1994, 1995, 1997, 2003 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -52,7 +52,14 @@
|
|||||||
jmp %g1 + %lo(syscall_error); nop; \
|
jmp %g1 + %lo(syscall_error); nop; \
|
||||||
1:
|
1:
|
||||||
|
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.global syscall_error; \
|
||||||
|
ENTRY (name) \
|
||||||
|
mov SYS_ify(syscall_name), %g1; \
|
||||||
|
ta 0
|
||||||
|
|
||||||
#define ret retl; nop
|
#define ret retl; nop
|
||||||
|
#define ret_NOERRNO retl; nop
|
||||||
#define r0 %o0
|
#define r0 %o0
|
||||||
#define r1 %o1
|
#define r1 %o1
|
||||||
#define MOVE(x,y) mov x, y
|
#define MOVE(x,y) mov x, y
|
||||||
|
@ -14,13 +14,13 @@ fcntl - fcntl Ci:iiF __libc_fcntl __fcntl __fcntl_internal fcntl
|
|||||||
fstatfs - fstatfs i:ip __fstatfs fstatfs
|
fstatfs - fstatfs i:ip __fstatfs fstatfs
|
||||||
fsync - fsync Ci:i __libc_fsync fsync
|
fsync - fsync Ci:i __libc_fsync fsync
|
||||||
getdomain - getdomainname i:si getdomainname
|
getdomain - getdomainname i:si getdomainname
|
||||||
getgid - getgid i: __getgid getgid
|
getgid - getgid Ei: __getgid getgid
|
||||||
getgroups - getgroups i:ip __getgroups getgroups
|
getgroups - getgroups i:ip __getgroups getgroups
|
||||||
getitimer - getitimer i:ip __getitimer getitimer
|
getitimer - getitimer i:ip __getitimer getitimer
|
||||||
getpid - getpid i: __getpid getpid
|
getpid - getpid Ei: __getpid getpid
|
||||||
getpriority - getpriority i:ii getpriority
|
getpriority - getpriority i:ii getpriority
|
||||||
getrlimit - getrlimit i:ip __getrlimit getrlimit
|
getrlimit - getrlimit i:ip __getrlimit getrlimit
|
||||||
getuid - getuid i: __getuid getuid
|
getuid - getuid Ei: __getuid getuid
|
||||||
ioctl - ioctl i:iiI __ioctl ioctl
|
ioctl - ioctl i:iiI __ioctl ioctl
|
||||||
kill - kill i:ii __kill kill
|
kill - kill i:ii __kill kill
|
||||||
link - link i:ss __link link
|
link - link i:ss __link link
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1991, 92, 93, 96, 98 Free Software Foundation, Inc.
|
/* Copyright (C) 1991, 92, 93, 96, 98, 2003 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -47,6 +47,9 @@
|
|||||||
#ifndef PSEUDO_END
|
#ifndef PSEUDO_END
|
||||||
#define PSEUDO_END(sym)
|
#define PSEUDO_END(sym)
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef PSEUDO_END_NOENTRY
|
||||||
|
#define PSEUDO_END_NOENTRY(sym)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Wrappers around system calls should normally inline the system call code.
|
/* Wrappers around system calls should normally inline the system call code.
|
||||||
But sometimes it is not possible or implemented and we use this code. */
|
But sometimes it is not possible or implemented and we use this code. */
|
||||||
|
@ -64,6 +64,22 @@
|
|||||||
SYSCALL_ERROR_HANDLER \
|
SYSCALL_ERROR_HANDLER \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#undef PSEUDO_NOERRNO
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.text; \
|
||||||
|
ENTRY (name); \
|
||||||
|
DO_CALL (syscall_name, args);
|
||||||
|
|
||||||
|
#define PSEUDO_RET_NOERRNO \
|
||||||
|
RETINSTR(movcc, pc, lr); \
|
||||||
|
nop
|
||||||
|
#undef ret_NOERRNO
|
||||||
|
#define ret_NOERRNO PSEUDO_RET_NOERRNO
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
#if NOT_IN_libc
|
#if NOT_IN_libc
|
||||||
# define SYSCALL_ERROR __local_syscall_error
|
# define SYSCALL_ERROR __local_syscall_error
|
||||||
# define SYSCALL_ERROR_HANDLER \
|
# define SYSCALL_ERROR_HANDLER \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Assembler macros for CRIS.
|
/* Assembler macros for CRIS.
|
||||||
Copyright (C) 1999, 2001 Free Software Foundation, Inc.
|
Copyright (C) 1999, 2001, 2003 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -106,6 +106,18 @@
|
|||||||
PLTJUMP (syscall_error) @ \
|
PLTJUMP (syscall_error) @ \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
ENTRY (name) @ \
|
||||||
|
DOARGS_##args @ \
|
||||||
|
movu.w SYS_ify (syscall_name),$r9 @ \
|
||||||
|
break 13 @ \
|
||||||
|
UNDOARGS_return_##args
|
||||||
|
|
||||||
|
#define ret_NOERRNO
|
||||||
|
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
#define DOARGS_0
|
#define DOARGS_0
|
||||||
#define DOARGS_1
|
#define DOARGS_1
|
||||||
#define DOARGS_2
|
#define DOARGS_2
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Assembler macros for PA-RISC.
|
/* Assembler macros for PA-RISC.
|
||||||
Copyright (C) 1999,2001,02 Free Software Foundation, Inc.
|
Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper, <drepper@cygnus.com>, August 1999.
|
Contributed by Ulrich Drepper, <drepper@cygnus.com>, August 1999.
|
||||||
Linux/PA-RISC changes by Philipp Rumpf, <prumpf@tux.org>, March 2000.
|
Linux/PA-RISC changes by Philipp Rumpf, <prumpf@tux.org>, March 2000.
|
||||||
@ -84,6 +84,10 @@
|
|||||||
bv 0(2) ASM_LINE_SEP \
|
bv 0(2) ASM_LINE_SEP \
|
||||||
nop
|
nop
|
||||||
|
|
||||||
|
#define ret_NOERRNO \
|
||||||
|
bv 0(2) ASM_LINE_SEP \
|
||||||
|
nop
|
||||||
|
|
||||||
#undef END
|
#undef END
|
||||||
#define END(name) \
|
#define END(name) \
|
||||||
1: .size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name)
|
1: .size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name)
|
||||||
@ -115,6 +119,15 @@
|
|||||||
#define PSEUDO_END(name) \
|
#define PSEUDO_END(name) \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
ENTRY (name) \
|
||||||
|
DO_CALL(syscall_name, args) ASM_LINE_SEP \
|
||||||
|
nop
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
#define JUMPTARGET(name) name
|
#define JUMPTARGET(name) name
|
||||||
#define SYSCALL_PIC_SETUP /* Nothing. */
|
#define SYSCALL_PIC_SETUP /* Nothing. */
|
||||||
|
|
||||||
|
@ -78,6 +78,18 @@
|
|||||||
SYSCALL_ERROR_HANDLER \
|
SYSCALL_ERROR_HANDLER \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#undef PSEUDO_NOERRNO
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.text; \
|
||||||
|
ENTRY (name) \
|
||||||
|
DO_CALL (syscall_name, args)
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
|
#define ret_NOERRNO ret
|
||||||
|
|
||||||
#ifndef PIC
|
#ifndef PIC
|
||||||
# define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
|
# define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
|
||||||
#else
|
#else
|
||||||
|
@ -96,12 +96,21 @@
|
|||||||
#undef PSEUDO_END
|
#undef PSEUDO_END
|
||||||
#define PSEUDO_END(name) .endp C_SYMBOL_NAME(name);
|
#define PSEUDO_END(name) .endp C_SYMBOL_NAME(name);
|
||||||
|
|
||||||
|
#undef PSEUDO_NOERRNO
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
ENTRY(name) \
|
||||||
|
DO_CALL (SYS_ify(syscall_name));
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) .endp C_SYMBOL_NAME(name);
|
||||||
|
|
||||||
#undef END
|
#undef END
|
||||||
#define END(name) \
|
#define END(name) \
|
||||||
.size C_SYMBOL_NAME(name), . - C_SYMBOL_NAME(name) ; \
|
.size C_SYMBOL_NAME(name), . - C_SYMBOL_NAME(name) ; \
|
||||||
.endp C_SYMBOL_NAME(name)
|
.endp C_SYMBOL_NAME(name)
|
||||||
|
|
||||||
#define ret br.ret.sptk.few b0
|
#define ret br.ret.sptk.few b0
|
||||||
|
#define ret_NOERRNO br.ret.sptk.few b0
|
||||||
|
|
||||||
#else /* not __ASSEMBLER__ */
|
#else /* not __ASSEMBLER__ */
|
||||||
|
|
||||||
|
@ -68,6 +68,16 @@
|
|||||||
SYSCALL_ERROR_HANDLER; \
|
SYSCALL_ERROR_HANDLER; \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#undef PSEUDO_NOERRNO
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.text; \
|
||||||
|
ENTRY (name) \
|
||||||
|
DO_CALL (syscall_name, args)
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
#ifdef PIC
|
#ifdef PIC
|
||||||
# if RTLD_PRIVATE_ERRNO
|
# if RTLD_PRIVATE_ERRNO
|
||||||
# define SYSCALL_ERROR_HANDLER \
|
# define SYSCALL_ERROR_HANDLER \
|
||||||
|
@ -59,6 +59,16 @@
|
|||||||
SYSCALL_ERROR_HANDLER; \
|
SYSCALL_ERROR_HANDLER; \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#undef PSEUDO
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.text; \
|
||||||
|
ENTRY (name) \
|
||||||
|
DO_CALL (syscall_name, args)
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
#ifndef PIC
|
#ifndef PIC
|
||||||
# define SYSCALL_ERROR_LABEL 0f
|
# define SYSCALL_ERROR_LABEL 0f
|
||||||
# define SYSCALL_ERROR_HANDLER \
|
# define SYSCALL_ERROR_HANDLER \
|
||||||
@ -143,6 +153,9 @@
|
|||||||
#define ret \
|
#define ret \
|
||||||
br 14
|
br 14
|
||||||
|
|
||||||
|
#define ret_NOERRNO \
|
||||||
|
br 14
|
||||||
|
|
||||||
#endif /* __ASSEMBLER__ */
|
#endif /* __ASSEMBLER__ */
|
||||||
|
|
||||||
#undef INLINE_SYSCALL
|
#undef INLINE_SYSCALL
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Assembler macros for 64 bit S/390.
|
/* Assembler macros for 64 bit S/390.
|
||||||
Copyright (C) 2001,02 Free Software Foundation, Inc.
|
Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
@ -72,6 +72,17 @@
|
|||||||
SYSCALL_ERROR_HANDLER; \
|
SYSCALL_ERROR_HANDLER; \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#undef PSEUDO_NOERRNO
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.text; \
|
||||||
|
ENTRY (name) \
|
||||||
|
DO_CALL (syscall_name, args)
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
SYSCALL_ERROR_HANDLER; \
|
||||||
|
END (name)
|
||||||
|
|
||||||
#ifndef PIC
|
#ifndef PIC
|
||||||
# define SYSCALL_ERROR_LABEL syscall_error
|
# define SYSCALL_ERROR_LABEL syscall_error
|
||||||
# define SYSCALL_ERROR_HANDLER
|
# define SYSCALL_ERROR_HANDLER
|
||||||
@ -144,6 +155,9 @@
|
|||||||
#define ret \
|
#define ret \
|
||||||
br 14
|
br 14
|
||||||
|
|
||||||
|
#define ret_NOERRNO \
|
||||||
|
br 14
|
||||||
|
|
||||||
#endif /* __ASSEMBLER__ */
|
#endif /* __ASSEMBLER__ */
|
||||||
|
|
||||||
#undef INLINE_SYSCALL
|
#undef INLINE_SYSCALL
|
||||||
|
@ -65,6 +65,18 @@
|
|||||||
#define PSEUDO_END(name) \
|
#define PSEUDO_END(name) \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#undef PSEUDO_NOERRNO
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.text; \
|
||||||
|
ENTRY (name); \
|
||||||
|
DO_CALL (syscall_name, args)
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
|
#define ret_NOERRNO ret
|
||||||
|
|
||||||
#ifndef PIC
|
#ifndef PIC
|
||||||
# define SYSCALL_ERROR_HANDLER \
|
# define SYSCALL_ERROR_HANDLER \
|
||||||
mov.l 0f,r1; \
|
mov.l 0f,r1; \
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
|
|
||||||
/* Linux/SPARC uses a different trap number */
|
/* Linux/SPARC uses a different trap number */
|
||||||
#undef PSEUDO
|
#undef PSEUDO
|
||||||
|
#undef PSEUDO_NOERRNO
|
||||||
#undef ENTRY
|
#undef ENTRY
|
||||||
#undef END
|
#undef END
|
||||||
#undef LOC
|
#undef LOC
|
||||||
@ -108,6 +109,12 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
|
|||||||
nop; \
|
nop; \
|
||||||
SYSCALL_ERROR_HANDLER
|
SYSCALL_ERROR_HANDLER
|
||||||
|
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.text; \
|
||||||
|
ENTRY(name); \
|
||||||
|
LOADSYSCALL(syscall_name); \
|
||||||
|
ta 0x10
|
||||||
|
|
||||||
#else /* __ASSEMBLER__ */
|
#else /* __ASSEMBLER__ */
|
||||||
|
|
||||||
#define __SYSCALL_STRING \
|
#define __SYSCALL_STRING \
|
||||||
|
@ -14,12 +14,12 @@ fdatasync - fdatasync i:i fdatasync
|
|||||||
flock - flock i:ii __flock flock
|
flock - flock i:ii __flock flock
|
||||||
fork - fork i: __libc_fork __fork fork
|
fork - fork i: __libc_fork __fork fork
|
||||||
get_kernel_syms EXTRA get_kernel_syms i:p get_kernel_syms
|
get_kernel_syms EXTRA get_kernel_syms i:p get_kernel_syms
|
||||||
getegid - getegid i: __getegid getegid
|
getegid - getegid Ei: __getegid getegid
|
||||||
geteuid - geteuid i: __geteuid geteuid
|
geteuid - geteuid Ei: __geteuid geteuid
|
||||||
getpgid - getpgid i:i __getpgid getpgid
|
getpgid - getpgid i:i __getpgid getpgid
|
||||||
getpgrp - getpgrp i: getpgrp
|
getpgrp - getpgrp Ei: getpgrp
|
||||||
getpmsg - getpmsg i:ipppp getpmsg
|
getpmsg - getpmsg i:ipppp getpmsg
|
||||||
getppid - getppid i: __getppid getppid
|
getppid - getppid Ei: __getppid getppid
|
||||||
getresuid - getresuid i:ppp getresuid
|
getresuid - getresuid i:ppp getresuid
|
||||||
getresgid - getresgid i:ppp getresgid
|
getresgid - getresgid i:ppp getresgid
|
||||||
getsid - getsid i:i getsid
|
getsid - getsid i:i getsid
|
||||||
|
@ -81,6 +81,18 @@
|
|||||||
SYSCALL_ERROR_HANDLER \
|
SYSCALL_ERROR_HANDLER \
|
||||||
END (name)
|
END (name)
|
||||||
|
|
||||||
|
#undef PSEUDO_NOERRNO
|
||||||
|
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||||
|
.text; \
|
||||||
|
ENTRY (name) \
|
||||||
|
DO_CALL (syscall_name, args)
|
||||||
|
|
||||||
|
#undef PSEUDO_END_NOERRNO
|
||||||
|
#define PSEUDO_END_NOERRNO(name) \
|
||||||
|
END (name)
|
||||||
|
|
||||||
|
#define ret_NOERRNO ret
|
||||||
|
|
||||||
#ifndef PIC
|
#ifndef PIC
|
||||||
#define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
|
#define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
|
||||||
#elif RTLD_PRIVATE_ERRNO
|
#elif RTLD_PRIVATE_ERRNO
|
||||||
@ -168,7 +180,7 @@
|
|||||||
called the stack is not aligned since the return address has just
|
called the stack is not aligned since the return address has just
|
||||||
been pushed.
|
been pushed.
|
||||||
|
|
||||||
|
|
||||||
Syscalls of more than 6 arguments are not supported. */
|
Syscalls of more than 6 arguments are not supported. */
|
||||||
|
|
||||||
#undef DO_CALL
|
#undef DO_CALL
|
||||||
|
Reference in New Issue
Block a user