diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | sysdeps/x86_64/dl-trampoline.h | 16 |
2 files changed, 14 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog index 214ef35d84..06d3a4f54e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2012-05-15 H.J. Lu <hongjiu.lu@intel.com> + * sysdeps/x86_64/dl-trampoline.h: Use R*_LP to pass arguments + and access return value for _dl_profile_fixup. Use R10_LP to + load frame size. + +2012-05-15 H.J. Lu <hongjiu.lu@intel.com> + * sysdeps/unix/sysv/linux/x86_64/x32/init-first.c: New. 2012-05-15 H.J. Lu <hongjiu.lu@intel.com> diff --git a/sysdeps/x86_64/dl-trampoline.h b/sysdeps/x86_64/dl-trampoline.h index 4c18e692db..0f3de3d3d5 100644 --- a/sysdeps/x86_64/dl-trampoline.h +++ b/sysdeps/x86_64/dl-trampoline.h @@ -40,14 +40,14 @@ vmovdqa %xmm7, (LR_SIZE + XMM_SIZE*7)(%rsp) #endif - movq %rsp, %rcx # La_x86_64_regs pointer to %rcx. - movq 48(%rbx), %rdx # Load return address if needed. - movq 40(%rbx), %rsi # Copy args pushed by PLT in register. - movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index - leaq 16(%rbx), %r8 + mov %RSP_LP, %RCX_LP # La_x86_64_regs pointer to %rcx. + mov 48(%rbx), %RDX_LP # Load return address if needed. + mov 40(%rbx), %RSI_LP # Copy args pushed by PLT in register. + mov 32(%rbx), %RDI_LP # %rdi: link_map, %rsi: reloc_index + lea 16(%rbx), %R8_LP # Address of framesize call _dl_profile_fixup # Call resolver. - movq %rax, %r11 # Save return value. + mov %RAX_LP, %R11_LP # Save return value. movq 8(%rbx), %rax # Get back register content. movq LR_RDX_OFFSET(%rsp), %rdx @@ -140,8 +140,8 @@ 1: #endif - movq 16(%rbx), %r10 # Anything in framesize? - testq %r10, %r10 + mov 16(%rbx), %R10_LP # Anything in framesize? + test %R10_LP, %R10_LP jns 3f /* There's nothing in the frame size, so there |