1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

* sysdeps/i386/bp-asm.h (POP_ERRNO_LOCATION_RETURN): Fold insns.

* sysdeps/unix/i386/sysdep.S (syscall_error): Push & pop space 
for BP return value & push implicit struct-return pointer to 
__errno_location. 
* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. 
(SYSCALL_ERROR_HANDLER): Likewise. 
* sysdeps/unix/sysv/linux/i386/i686/sysdep.h 
(SYSCALL_ERROR_HANDLER): Likewise.
	* sysdeps/i386/bp-asm.h (POP_ERRNO_LOCATION_RETURN): Fold insns.
	* sysdeps/unix/i386/sysdep.S (syscall_error): Push & pop space
	for BP return value & push implicit struct-return pointer to
	__errno_location.
	* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
	(SYSCALL_ERROR_HANDLER): Likewise.
	* sysdeps/unix/sysv/linux/i386/i686/sysdep.h
	(SYSCALL_ERROR_HANDLER): Likewise.

	* Makeconfig (CPPFLAGS-.ob): Pass -fbounded-pointers
	for all files *.[cS].
This commit is contained in:
Greg McGary
2000-06-27 01:52:26 +00:00
parent 58ff985dd4
commit ee63ca212c
4 changed files with 37 additions and 14 deletions

View File

@ -22,6 +22,8 @@
/* There is some commonality. */
#include <sysdeps/unix/sysv/linux/i386/sysdep.h>
#include <bp-sym.h>
#include <bp-asm.h>
/* We define special versions of the error handler code to match the i686's
deep branch prediction mechanism. */
@ -39,7 +41,9 @@
xorl %edx, %edx; \
subl %eax, %edx; \
pushl %edx; \
call __errno_location@PLT; \
PUSH_ERRNO_LOCATION_RETURN; \
call BP_SYM (__errno_location)@PLT; \
POP_ERRNO_LOCATION_RETURN; \
popl %ecx; \
popl %ebx; \
movl %ecx, (%eax); \

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1992, 93, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
/* Copyright (C) 1992, 93, 95, 96, 97, 98, 99, 00 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.org>, August 1995.
@ -22,6 +22,8 @@
/* There is some commonality. */
#include <sysdeps/unix/i386/sysdep.h>
#include <bp-sym.h>
#include <bp-asm.h>
/* For Linux we can use the system call table in the header file
/usr/include/asm/unistd.h
@ -82,7 +84,9 @@
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx; \
subl %eax, %edx; \
pushl %edx; \
call __errno_location@PLT; \
PUSH_ERRNO_LOCATION_RETURN; \
call BP_SYM (__errno_location)@PLT; \
POP_ERRNO_LOCATION_RETURN; \
popl %ecx; \
popl %ebx; \
movl %ecx, (%eax); \