about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-08-24 02:58:08 +0000
committerUlrich Drepper <drepper@redhat.com>2007-08-24 02:58:08 +0000
commit73e3ff07a3354d6c095e2945560755c8bc0a4387 (patch)
tree8111b1f4695205d356d463b6e4bd47226d767b5d
parent62e1b1f5644f5a0d913b91e7cc1bca4c6c32cf43 (diff)
downloadglibc-73e3ff07a3354d6c095e2945560755c8bc0a4387.tar.gz
glibc-73e3ff07a3354d6c095e2945560755c8bc0a4387.tar.xz
glibc-73e3ff07a3354d6c095e2945560755c8bc0a4387.zip
[BZ #3924]
	* sysdeps/i386/dl-trampoline.S (_dl_runtime_profile): Correctly
	align for function call in case pltexit has to be called later.
-rw-r--r--ChangeLog4
-rw-r--r--sysdeps/i386/dl-trampoline.S3
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 58df8983d0..3a00dd5823 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2007-08-23  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #3924]
+	* sysdeps/i386/dl-trampoline.S (_dl_runtime_profile): Correctly
+	align for function call in case pltexit has to be called later.
+
 	* sysdeps/i386/dl-trampoline.S (_dl_runtime_resolve): Avoid
 	implicit atomic operation when storing function pointer.
 	(_dl_runtime_profile): Likewise.
diff --git a/sysdeps/i386/dl-trampoline.S b/sysdeps/i386/dl-trampoline.S
index 5856a2f8a0..af9eaf6d56 100644
--- a/sysdeps/i386/dl-trampoline.S
+++ b/sysdeps/i386/dl-trampoline.S
@@ -111,9 +111,10 @@ _dl_runtime_profile:
 	cfi_rel_offset (esi, 0)
 	leal 44(%esp), %esi
 	movl %ebx, %ecx
+	orl $4, %ebx		# Increase frame size if necessary to align
+				# stack for the function call
 	movl %esp, %edi
 	subl %ebx, %edi
-	andl $0xfffffff0, %edi	# Align stack
 	movl %esp, %ebx
 	cfi_def_cfa_register (ebx)
 	movl %edi, %esp