diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-10-21 09:54:36 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-10-21 10:14:08 -0700 |
commit | 95b097779a670dca5f06fbceede31de60046ed76 (patch) | |
tree | 3bed700a7fceab2490de024e944271c212348152 | |
parent | 0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3 (diff) | |
download | glibc-95b097779a670dca5f06fbceede31de60046ed76.tar glibc-95b097779a670dca5f06fbceede31de60046ed76.tar.gz glibc-95b097779a670dca5f06fbceede31de60046ed76.tar.bz2 glibc-95b097779a670dca5f06fbceede31de60046ed76.zip |
Build i386 __libc_do_syscall when PROF is defined
Need to provide i386 __libc_do_syscall when PROF is defined.
Define OPTIMIZE_FOR_GCC_5 for .S files so that it can be used
in libc-do-syscall.S.
* sysdeps/unix/sysv/linux/i386/libc-do-syscall.S: Replace
__GNUC_PREREQ (5,0) with OPTIMIZE_FOR_GCC_5.
* sysdeps/unix/sysv/linux/i386/sysdep.h (OPTIMIZE_FOR_GCC_5):
Moved before "#ifdef __ASSEMBLER__".
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/libc-do-syscall.S | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sysdep.h | 19 |
3 files changed, 17 insertions, 11 deletions
@@ -1,3 +1,10 @@ +2015-10-21 H.J. Lu <hongjiu.lu@intel.com> + + * sysdeps/unix/sysv/linux/i386/libc-do-syscall.S: Replace + __GNUC_PREREQ (5,0) with OPTIMIZE_FOR_GCC_5. + * sysdeps/unix/sysv/linux/i386/sysdep.h (OPTIMIZE_FOR_GCC_5): + Moved before "#ifdef __ASSEMBLER__". + 2015-10-21 Joseph Myers <joseph@codesourcery.com> [BZ #19156] diff --git a/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S b/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S index cdef3d5de1..f748cf28f6 100644 --- a/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S +++ b/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S @@ -18,7 +18,7 @@ #include <sysdep.h> -#if !__GNUC_PREREQ (5,0) +#ifndef OPTIMIZE_FOR_GCC_5 /* %eax, %ecx, %edx and %esi contain the values expected by the kernel. %edi points to a structure with the values of %ebx, %edi and %ebp. */ diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index 58305447d4..dbe5654f58 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -41,6 +41,15 @@ # undef I386_USE_SYSENTER #endif +/* Since GCC 5 and above can properly spill %ebx with PIC when needed, + we can inline syscalls with 6 arguments if GCC 5 or above is used + to compile glibc. Disable GCC 5 optimization when compiling for + profiling since asm ("ebp") can't be used to put the 6th argument + in %ebp for syscall. */ +#if __GNUC_PREREQ (5,0) && !defined PROF +# define OPTIMIZE_FOR_GCC_5 +#endif + #ifdef __ASSEMBLER__ /* Linux uses a negative return value to indicate syscall errors, @@ -227,16 +236,6 @@ extern int __syscall_error (int) attribute_hidden __attribute__ ((__regparm__ (1))); -/* Since GCC 5 and above can properly spill %ebx with PIC when needed, - we can inline syscalls with 6 arguments if GCC 5 or above is used - to compile glibc. Disable GCC 5 optimization when compiling for - profiling since asm ("ebp") can't be used to put the 6th argument - in %ebp for syscall. */ - -#if __GNUC_PREREQ (5,0) && !defined PROF -# define OPTIMIZE_FOR_GCC_5 -#endif - #ifndef OPTIMIZE_FOR_GCC_5 /* We need some help from the assembler to generate optimal code. We define some macros here which later will be used. */ |