This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
PUSH_ERRNO_LOCATION_RETURN is defined in the new file libc/sysdeps/i386/bp-asm.h that was checked in previously. PUSH_ERRNO_LOCATION_RETURN and POP_ERRNO_LOCATION_RETURN expand to nothing, and BP_SYM does nothing for non-BP builds. OK? 2000-06-26 Greg McGary <greg@mcgary.org> * 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. Index: sysdeps/i386/bp-asm.h =================================================================== RCS file: /cvs/glibc/libc/sysdeps/i386/bp-asm.h,v retrieving revision 1.1 diff -u -p -r1.1 bp-asm.h --- bp-asm.h 2000/06/09 06:14:39 1.1 +++ bp-asm.h 2000/06/27 01:28:53 @@ -106,8 +106,7 @@ argument, but we must pop the space for the BP itself. We also dereference the return value in order to dig out the pointer value. */ # define POP_ERRNO_LOCATION_RETURN \ - movl (%esp), %eax; \ - addl $4, %esp; \ + popl %eax; \ addl $8, %esp # else /* !__BOUNDED_POINTERS__ */ Index: sysdeps/unix/i386/sysdep.S =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/i386/sysdep.S,v retrieving revision 1.18 diff -u -p -B -w -r1.18 sysdep.S --- sysdep.S 1998/03/06 11:39:04 1.18 +++ sysdep.S 2000/06/27 01:24:05 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 2000 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,6 +19,8 @@ #include <sysdep.h> #define _ERRNO_H #include <bits/errno.h> +#include <bp-asm.h> +#include <bp-sym.h> .globl C_SYMBOL_NAME(errno) .globl syscall_error @@ -43,7 +45,9 @@ notb: movl %eax, C_SYMBOL_NAME(errno) #else pushl %eax - call __errno_location + PUSH_ERRNO_LOCATION_RETURN + call BP_SYM (__errno_location) + POP_ERRNO_LOCATION_RETURN popl %ecx movl %ecx, (%eax) #endif @@ -58,7 +62,9 @@ notb: movl %eax, (%ecx) #else pushl %eax - call C_SYMBOL_NAME(__errno_location@PLT) + PUSH_ERRNO_LOCATION_RETURN + call C_SYMBOL_NAME (BP_SYM (__errno_location)@PLT) + POP_ERRNO_LOCATION_RETURN popl %ecx /* Pop %ebx value saved before jumping here. */ popl %ebx Index: sysdeps/unix/sysv/linux/i386/i686/sysdep.h =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/i386/i686/sysdep.h,v retrieving revision 1.4 diff -u -p -B -w -r1.4 sysdep.h --- sysdep.h 2000/05/22 01:03:28 1.4 +++ sysdep.h 2000/06/27 01:24:05 @@ -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); \ Index: sysdeps/unix/sysv/linux/i386/sysdep.h =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/i386/sysdep.h,v retrieving revision 1.26 diff -u -p -B -w -r1.26 sysdep.h --- sysdep.h 1999/01/13 13:28:39 1.26 +++ sysdep.h 2000/06/27 01:24:06 @@ -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); \
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |