about summary refs log tree commit diff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-10-19 08:50:07 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-10-19 08:50:28 -0700
commit37f4c94e1f0ae24b03d49839cd39c03076bd5c5b (patch)
tree7dfe138516c776a450125e9f25a77c298cca9703
parent79c6f51428a9ec977e611e609a8be6aebcb00006 (diff)
downloadglibc-37f4c94e1f0ae24b03d49839cd39c03076bd5c5b.tar.gz
glibc-37f4c94e1f0ae24b03d49839cd39c03076bd5c5b.tar.xz
glibc-37f4c94e1f0ae24b03d49839cd39c03076bd5c5b.zip
X86-64: Correct CFA in _dl_runtime_resolve
When stack is re-aligned in _dl_runtime_resolve, there is no need to
adjust CFA when allocating register save area on stack.

	* sysdeps/x86_64/dl-trampoline.h (_dl_runtime_resolve): Don't
	adjust CFA when allocating register save area on re-aligned
	stack.

(cherry picked from commit 0ac8ee53e8efbfd6e1c37094b4653f5c2dad65b5)
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/x86_64/dl-trampoline.h2
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 79e3eb2e53..e61f956ef6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sysdeps/x86_64/dl-trampoline.h (_dl_runtime_resolve): Don't
+	adjust CFA when allocating register save area on re-aligned
+	stack.
+
 2016-12-21  Joseph Myers  <joseph@codesourcery.com>
 
 	[BZ #20978]
diff --git a/sysdeps/x86_64/dl-trampoline.h b/sysdeps/x86_64/dl-trampoline.h
index 32ad3af202..d21c5a987a 100644
--- a/sysdeps/x86_64/dl-trampoline.h
+++ b/sysdeps/x86_64/dl-trampoline.h
@@ -169,7 +169,9 @@ _dl_runtime_resolve:
 	and $-VEC_SIZE, %RSP_LP
 #endif
 	sub $REGISTER_SAVE_AREA, %RSP_LP
+#if !DL_RUNTIME_RESOLVE_REALIGN_STACK
 	cfi_adjust_cfa_offset(REGISTER_SAVE_AREA)
+#endif
 	# Preserve registers otherwise clobbered.
 	movq %rax, REGISTER_SAVE_RAX(%rsp)
 	movq %rcx, REGISTER_SAVE_RCX(%rsp)