mirror of git://sourceware.org/git/glibc.git
				
				
				
			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:
		
							parent
							
								
									f9ad605a05
								
							
						
					
					
						commit
						9eb88290df
					
				
							
								
								
									
										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 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue