This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.23-47-g5cdc3d9


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  5cdc3d9db02773ff9904642254edb4c0fb67c9ee (commit)
      from  87a07a437656aede6f303688b55ae1834962bee2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=5cdc3d9db02773ff9904642254edb4c0fb67c9ee

commit 5cdc3d9db02773ff9904642254edb4c0fb67c9ee
Author: Paul Pluzhnikov <ppluzhnikov@google.com>
Date:   Thu Mar 3 09:53:49 2016 -0800

    2016-03-03  Paul Pluzhnikov  <ppluzhnikov@google.com>
    
    	[BZ #19490]
    	* sysdeps/x86_64/_mcount.S (_mcount): Add unwind descriptor.
    	(__fentry__): Likewise

diff --git a/ChangeLog b/ChangeLog
index a31f95a..24c2b65 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-03-03  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+	[BZ #19490]
+	* sysdeps/x86_64/_mcount.S (_mcount): Add unwind descriptor.
+	(__fentry__): Likewise
+
 2016-03-03  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* gmon/Makefile (noprof): Add $(sysdep_noprof).
diff --git a/sysdeps/x86_64/_mcount.S b/sysdeps/x86_64/_mcount.S
index ba13643..a506d21 100644
--- a/sysdeps/x86_64/_mcount.S
+++ b/sysdeps/x86_64/_mcount.S
@@ -24,19 +24,24 @@
 
 #include <sysdep.h>
 
-	.globl C_SYMBOL_NAME(_mcount)
-	.type C_SYMBOL_NAME(_mcount), @function
-	.align ALIGNARG(4)
-C_LABEL(_mcount)
+ENTRY(_mcount)
 	/* Allocate space for 7 registers.  */
 	subq	$56,%rsp
+	cfi_adjust_cfa_offset (56)
 	movq	%rax,(%rsp)
+	cfi_rel_offset (rax, 0)
 	movq	%rcx,8(%rsp)
+	cfi_rel_offset (rcx, 8)
 	movq	%rdx,16(%rsp)
+	cfi_rel_offset (rdx, 16)
 	movq	%rsi,24(%rsp)
+	cfi_rel_offset (rsi, 24)
 	movq	%rdi,32(%rsp)
+	cfi_rel_offset (rdi, 32)
 	movq	%r8,40(%rsp)
+	cfi_rel_offset (r8, 40)
 	movq	%r9,48(%rsp)
+	cfi_rel_offset (r9, 48)
 
 	/* Setup parameter for __mcount_internal.  */
 	/* selfpc is the return address on the stack.  */
@@ -47,33 +52,50 @@ C_LABEL(_mcount)
 	/* Pop the saved registers.  Please note that `mcount' has no
 	   return value.  */
 	movq	48(%rsp),%r9
+	cfi_restore (r9)
 	movq	40(%rsp),%r8
+	cfi_restore (r8)
 	movq	32(%rsp),%rdi
+	cfi_restore (rdi)
 	movq	24(%rsp),%rsi
+	cfi_restore (rsi)
 	movq	16(%rsp),%rdx
+	cfi_restore (rdx)
 	movq	8(%rsp),%rcx
+	cfi_restore (rcx)
 	movq	(%rsp),%rax
+	cfi_restore (rax)
 	addq	$56,%rsp
+	cfi_adjust_cfa_offset (-56)
 	ret
-
-	ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount))
+END(_mcount)
 
 #undef mcount
 weak_alias (_mcount, mcount)
 
-	.globl C_SYMBOL_NAME(__fentry__)
-	.type C_SYMBOL_NAME(__fentry__), @function
-	.align ALIGNARG(4)
-C_LABEL(__fentry__)
-	/* Allocate space for 7 registers.  */
+/* __fentry__ is different from _mcount in that it is called before
+   function prolog.  This means (among other things) that it has non-standard
+   stack alignment on entry: (%RSP & 0xF) == 0.  */
+
+ENTRY(__fentry__)
+	/* Allocate space for 7 registers
+	   (+8 bytes for proper stack alignment).  */
 	subq	$64,%rsp
+	cfi_adjust_cfa_offset (64)
 	movq	%rax,(%rsp)
+	cfi_rel_offset (rax, 0)
 	movq	%rcx,8(%rsp)
+	cfi_rel_offset (rcx, 8)
 	movq	%rdx,16(%rsp)
+	cfi_rel_offset (rdx, 16)
 	movq	%rsi,24(%rsp)
+	cfi_rel_offset (rsi, 24)
 	movq	%rdi,32(%rsp)
+	cfi_rel_offset (rdi, 32)
 	movq	%r8,40(%rsp)
+	cfi_rel_offset (r8, 40)
 	movq	%r9,48(%rsp)
+	cfi_rel_offset (r9, 48)
 
 	/* Setup parameter for __mcount_internal.  */
 	/* selfpc is the return address on the stack.  */
@@ -84,13 +106,20 @@ C_LABEL(__fentry__)
 	/* Pop the saved registers.  Please note that `__fentry__' has no
 	   return value.  */
 	movq	48(%rsp),%r9
+	cfi_restore (r9)
 	movq	40(%rsp),%r8
+	cfi_restore (r8)
 	movq	32(%rsp),%rdi
+	cfi_restore (rdi)
 	movq	24(%rsp),%rsi
+	cfi_restore (rsi)
 	movq	16(%rsp),%rdx
+	cfi_restore (rdx)
 	movq	8(%rsp),%rcx
+	cfi_restore (rcx)
 	movq	(%rsp),%rax
+	cfi_restore (rax)
 	addq	$64,%rsp
+	cfi_adjust_cfa_offset (-64)
 	ret
-
-	ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__fentry__))
+END(__fentry__)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                |    6 +++++
 sysdeps/x86_64/_mcount.S |   55 +++++++++++++++++++++++++++++++++++-----------
 2 files changed, 48 insertions(+), 13 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]