Use R*_LP to call _dl_profile_fixup and frame size

This commit is contained in:
H.J. Lu 2012-05-15 14:24:00 -07:00
parent d9754f5572
commit d86813a021
2 changed files with 14 additions and 8 deletions

View file

@ -1,3 +1,9 @@
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.

View file

@ -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