diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2007-09-12 16:26:54 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2007-09-12 16:26:54 +0000 |
commit | 83584a7af898dd93c48600fe850d150c51b10899 (patch) | |
tree | 0affa8ffee374ab83e40501d8d8967a03569c44d /libc/sysdeps/i386/dl-trampoline.S | |
parent | 04b4d23592609edcd19fd5a461bbe6d3cc677b5b (diff) | |
download | eglibc2-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.S | 19 |
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 |