+2010-01-28 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/mips/dl-trampoline.c (_dl_runtime_resolve,
+ _dl_runtime_pltresolve): Calculate offset from start of function
+ to .cpload instead of hardcoding instruction size.
+
2010-01-11 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/mips/bits/stat.h: Fix double-inclusion
.frame $29, " STRINGXP(ELF_DL_FRAME_SIZE) ", $31\n\
.set noreorder\n\
# Save GP.\n\
- move $3, $28\n\
+1: move $3, $28\n\
# Save arguments and sp value in stack.\n\
" STRINGXP(PTR_SUBIU) " $29, " STRINGXP(ELF_DL_FRAME_SIZE) "\n\
# Modify t9 ($25) so as to point .cpload instruction.\n\
- " IFABIO32(STRINGXP(PTR_ADDIU) " $25, 12\n") "\
+ " IFABIO32(STRINGXP(PTR_ADDIU) " $25, (2f-1b)\n") "\
# Compute GP.\n\
- " STRINGXP(SETUP_GP) "\n\
+2: " STRINGXP(SETUP_GP) "\n\
" STRINGXV(SETUP_GP64 (0, _dl_runtime_resolve)) "\n\
.set reorder\n\
# Save slot call pc.\n\
.frame $29, " STRINGXP(ELF_DL_PLT_FRAME_SIZE) ", $31\n\
.set noreorder\n\
# Save arguments and sp value in stack.\n\
- " STRINGXP(PTR_SUBIU) " $29, " STRINGXP(ELF_DL_PLT_FRAME_SIZE) "\n\
+1: " STRINGXP(PTR_SUBIU) " $29, " STRINGXP(ELF_DL_PLT_FRAME_SIZE) "\n\
" IFABIO32(STRINGXP(PTR_L) " $13, " STRINGXP(PTRSIZE) "($28)") "\n\
" IFNEWABI(STRINGXP(PTR_L) " $13, " STRINGXP(PTRSIZE) "($14)") "\n\
# Modify t9 ($25) so as to point .cpload instruction.\n\
- " IFABIO32(STRINGXP(PTR_ADDIU) " $25, 12\n") "\
+ " IFABIO32(STRINGXP(PTR_ADDIU) " $25, (2f-1b)\n") "\
# Compute GP.\n\
- " STRINGXP(SETUP_GP) "\n\
+2: " STRINGXP(SETUP_GP) "\n\
" STRINGXV(SETUP_GP64 (0, _dl_runtime_pltresolve)) "\n\
.set reorder\n\
" IFABIO32(STRINGXP(CPRESTORE(32))) "\n\