summaryrefslogtreecommitdiff
path: root/libc/sysdeps/i386/dl-trampoline.S
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2007-09-12 16:26:54 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2007-09-12 16:26:54 +0000
commit83584a7af898dd93c48600fe850d150c51b10899 (patch)
tree0affa8ffee374ab83e40501d8d8967a03569c44d /libc/sysdeps/i386/dl-trampoline.S
parent04b4d23592609edcd19fd5a461bbe6d3cc677b5b (diff)
downloadeglibc2-83584a7af898dd93c48600fe850d150c51b10899.tar.gz
Merge changes between r2424 and r3467 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@3468 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/sysdeps/i386/dl-trampoline.S')
-rw-r--r--libc/sysdeps/i386/dl-trampoline.S19
1 files changed, 10 insertions, 9 deletions
diff --git a/libc/sysdeps/i386/dl-trampoline.S b/libc/sysdeps/i386/dl-trampoline.S
index f991797ee..af9eaf6d5 100644
--- a/libc/sysdeps/i386/dl-trampoline.S
+++ b/libc/sysdeps/i386/dl-trampoline.S
@@ -37,10 +37,10 @@ _dl_runtime_resolve:
call _dl_fixup # Call resolver.
popl %edx # Get register content back.
cfi_adjust_cfa_offset (-4)
- popl %ecx
- cfi_adjust_cfa_offset (-4)
- xchgl %eax, (%esp) # Get %eax contents end store function address.
- ret $8 # Jump to function address.
+ movl (%esp), %ecx
+ movl %eax, (%esp) # Store the function address.
+ movl 4(%esp), %eax
+ ret $12 # Jump to function address.
cfi_endproc
.size _dl_runtime_resolve, .-_dl_runtime_resolve
@@ -83,10 +83,10 @@ _dl_runtime_profile:
cfi_adjust_cfa_offset (-4)
popl %edx # Get register content back.
cfi_adjust_cfa_offset (-4)
- popl %ecx
- cfi_adjust_cfa_offset (-4)
- xchgl %eax, (%esp) # Get %eax contents end store function address.
- ret $16 # Jump to function address.
+ movl (%esp), %ecx
+ movl %eax, (%esp) # Store the function address.
+ movl 4(%esp), %eax
+ ret $20 # Jump to function address.
/*
+32 return address
@@ -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