diff options
| author | matt <matt@NetBSD.org> | 2001-07-15 23:19:59 +0000 |
|---|---|---|
| committer | matt <matt@NetBSD.org> | 2001-07-15 23:19:59 +0000 |
| commit | 85d99cf46ccd55cb005c88a17263e0559ef14061 (patch) | |
| tree | 705ef30cfcd300f19d4d69f3a25a9cf03fd4adc2 /libexec | |
| parent | dcfd225d73949228b47692853f689ac29ead3670 (diff) | |
Fix binder routine to not use a volatile register.
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/ld.elf_so/arch/arm/rtld_start.S | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libexec/ld.elf_so/arch/arm/rtld_start.S b/libexec/ld.elf_so/arch/arm/rtld_start.S index 9a5f432b57d..808f507ad3b 100644 --- a/libexec/ld.elf_so/arch/arm/rtld_start.S +++ b/libexec/ld.elf_so/arch/arm/rtld_start.S @@ -1,4 +1,4 @@ -/* $NetBSD: rtld_start.S,v 1.2 2001/07/15 17:31:03 matt Exp $ */ +/* $NetBSD: rtld_start.S,v 1.3 2001/07/15 23:19:59 matt Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -65,19 +65,20 @@ _rtld_start: * lr = &GOT[2] */ _rtld_bind_start: - stmdb sp!,{r0-r3,sl,fp} + stmdb sp!,{r0-r4,sl,fp} sub r1, ip, lr /* r1 = 4 * (n + 1) */ sub r1, r1, #4 /* r1 = 4 * n */ add r1, r1, r1 /* r1 = 8 * n */ ldr r0, [lr, #-4] /* get obj ptr from GOT[1] */ + mov r4, ip /* save GOT location */ bl _rtld_bind /* Call the binder */ - str r0, [ip] /* save address in GOT */ + str r0, [r4] /* save address in GOT */ mov ip, r0 /* save new address */ - ldmia sp!,{r0-r3,sl,fp,lr} /* restore the stack */ + ldmia sp!,{r0-r4,sl,fp,lr} /* restore the stack */ mov pc, ip /* jump to the new address */ |
