[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[commits] r11178 - in /fsf/trunk/libc: ChangeLog Versions.def stdlib/Versions sysdeps/i386/i386-mcount.S sysdeps/x86_64/_mcount.S



Author: eglibc
Date: Sun Aug  8 00:03:04 2010
New Revision: 11178

Log:
Import glibc-mainline for 2010-08-08

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/Versions.def
    fsf/trunk/libc/stdlib/Versions
    fsf/trunk/libc/sysdeps/i386/i386-mcount.S
    fsf/trunk/libc/sysdeps/x86_64/_mcount.S

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sun Aug  8 00:03:04 2010
@@ -1,3 +1,10 @@
+2010-07-17  Andi Kleen  <ak@xxxxxxxxxxxxxxx>
+
+	* sysdeps/i386/i386-mcount.S (__fentry__): Define.
+	* sysdeps/x86_64/_mcount.S (__fentry__): Define.
+	* stdlib/Versions (__fentry__): Add for GLIBC 2.13
+	* Versions.def [GLIBC_2.13]: Add.
+
 2010-08-06  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid):

Modified: fsf/trunk/libc/Versions.def
==============================================================================
--- fsf/trunk/libc/Versions.def (original)
+++ fsf/trunk/libc/Versions.def Sun Aug  8 00:03:04 2010
@@ -29,6 +29,7 @@
   GLIBC_2.10
   GLIBC_2.11
   GLIBC_2.12
+  GLIBC_2.13
 %ifdef USE_IN_LIBIO
   HURD_CTHREADS_0.3
 %endif

Modified: fsf/trunk/libc/stdlib/Versions
==============================================================================
--- fsf/trunk/libc/stdlib/Versions (original)
+++ fsf/trunk/libc/stdlib/Versions Sun Aug  8 00:03:04 2010
@@ -100,6 +100,9 @@
   GLIBC_2.10 {
     quick_exit; __cxa_at_quick_exit;
   }
+  GLIBC_2.13 {
+    __fentry__;
+  }
   GLIBC_PRIVATE {
     # functions which have an additional interface since they are
     # are cancelable.

Modified: fsf/trunk/libc/sysdeps/i386/i386-mcount.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i386-mcount.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i386-mcount.S Sun Aug  8 00:03:04 2010
@@ -53,3 +53,28 @@
 
 #undef mcount
 weak_alias (_mcount, mcount)
+
+	/* Same as above, but doesn't require a frame pointer */
+	ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(__fentry__)
+	ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__fentry__), @function)
+	.align ALIGNARG(4)
+C_LABEL(__fentry__)
+	/* Save the caller-clobbered registers.  */
+	pushl %eax
+	pushl %ecx
+	pushl %edx
+
+	movl 12(%esp), %edx
+	movl 16(%esp), %eax
+
+	/* No need to access the PLT or GOT, __mcount_internal is an
+	   internal function and we can make a relative call.  */
+	call C_SYMBOL_NAME(__mcount_internal)
+
+	/* Pop the saved registers.  Please note that `__fentry__' has no
+	   return value.  */
+	popl %edx
+	popl %ecx
+	popl %eax
+	ret
+	ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__fentry__))

Modified: fsf/trunk/libc/sysdeps/x86_64/_mcount.S
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/_mcount.S (original)
+++ fsf/trunk/libc/sysdeps/x86_64/_mcount.S Sun Aug  8 00:03:04 2010
@@ -65,3 +65,41 @@
 
 #undef mcount
 weak_alias (_mcount, mcount)
+
+	ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(__fentry__)
+	ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__fentry__), @function)
+	.align ALIGNARG(4)
+C_LABEL(__fentry__)
+	/* Allocate space for 7 registers.  */
+	subq	$64,%rsp
+	movq	%rax,(%rsp)
+	movq	%rcx,8(%rsp)
+	movq	%rdx,16(%rsp)
+	movq	%rsi,24(%rsp)
+	movq	%rdi,32(%rsp)
+	movq	%r8,40(%rsp)
+	movq	%r9,48(%rsp)
+
+	/* Setup parameter for __mcount_internal.  */
+	/* selfpc is the return address on the stack.  */
+	movq	64(%rsp),%rsi
+	/* caller is the return address above it */
+	movq	72(%rsp),%rdi
+#ifdef PIC
+	call C_SYMBOL_NAME(__mcount_internal)@PLT
+#else
+	call C_SYMBOL_NAME(__mcount_internal)
+#endif
+	/* Pop the saved registers.  Please note that `__fentry__' has no
+	   return value.  */
+	movq	48(%rsp),%r9
+	movq	40(%rsp),%r8
+	movq	32(%rsp),%rdi
+	movq	24(%rsp),%rsi
+	movq	16(%rsp),%rdx
+	movq	8(%rsp),%rcx
+	movq	(%rsp),%rax
+	addq	$64,%rsp
+	ret
+
+	ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__fentry__))