]> sourceware.org Git - glibc.git/commitdiff
* sysdeps/i386/bp-asm.h (POP_ERRNO_LOCATION_RETURN): Fold insns.
authorGreg McGary <greg@mcgary.org>
Tue, 27 Jun 2000 01:52:26 +0000 (01:52 +0000)
committerGreg McGary <greg@mcgary.org>
Tue, 27 Jun 2000 01:52:26 +0000 (01:52 +0000)
* 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].

ChangeLog
sysdeps/unix/i386/sysdep.S
sysdeps/unix/sysv/linux/i386/i686/sysdep.h
sysdeps/unix/sysv/linux/i386/sysdep.h

index 0ce877f41618ded703cf7223c6c93b46d3435aae..1ce0773273af7a448a90ff74a8244c862be44c46 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 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.
+
        * Makeconfig: Add missing comment.
        * csu/Makefile (extra-objs, omit-deps, install-lib): Add
        BP-flavored startup object.
 
 2000-06-07  Greg McGary  <greg@mcgary.org>
 
-       * Makeconfig (CPPFLAGS-.ob): Pass -fbounded-pointers for all files
-       *.[cS].
+       * Makeconfig (CPPFLAGS-.ob): Pass -fbounded-pointers
+       for all files *.[cS].
        (CFLAGS-.ob): Don't optimize sibling calls.
        (bppfx): New variable.
        * Makerules (elide-bp-thunks): New variable.
index ff1fc0f43101d0908ee48607a5fad376cca4dde3..4c1361849f815dda9ea1ac6bcee924c8e6261116 100644 (file)
@@ -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
@@ -39,31 +41,35 @@ syscall_error:
 notb:
 #endif
 #ifndef        PIC
-#ifndef        _LIBC_REENTRANT
+# ifndef _LIBC_REENTRANT
        movl %eax, C_SYMBOL_NAME(errno)
-#else
+# 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
+# endif
 #else
        /* The caller has pushed %ebx and then set it up to
           point to the GOT before calling us through the PLT.  */
-#ifndef        _LIBC_REENTRANT
+# ifndef _LIBC_REENTRANT
        movl C_SYMBOL_NAME(errno@GOT)(%ebx), %ecx
 
        /* Pop %ebx value saved before jumping here.  */
        popl %ebx
        movl %eax, (%ecx)
-#else
+# 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
        movl %ecx, (%eax)
-#endif
+# endif
 #endif
        movl $-1, %eax
        ret
index 5a45d47046d2bf6baee34d37e24808bb0d460aad..25efe9c088b128e53d5883bff72873f228f25338 100644 (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);                                                         \
index 8b758fa469c7c36ba18f9e5108f92fdbc1518f95..10eba34ccd405dfd1da153a79222c140babca810 100644 (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);                                                         \
This page took 0.056801 seconds and 5 git commands to generate.