summaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authormatt <matt@NetBSD.org>2001-07-15 17:31:02 +0000
committermatt <matt@NetBSD.org>2001-07-15 17:31:02 +0000
commit2285430c7e1c86876d33e1ec65d6a4ac49a1f9c7 (patch)
tree8000d994ff1a3dfabacaac88a7f181c0d3b9040b /libexec
parent126898a2cd99a8d83e2b59aa57630f22f3c0ca59 (diff)
Bugfix for _rtld_start. Enable common plt processing code for arm
Diffstat (limited to 'libexec')
-rw-r--r--libexec/ld.elf_so/arch/arm/rtld_start.S6
-rw-r--r--libexec/ld.elf_so/reloc.c10
2 files changed, 10 insertions, 6 deletions
diff --git a/libexec/ld.elf_so/arch/arm/rtld_start.S b/libexec/ld.elf_so/arch/arm/rtld_start.S
index f0c2ea35055..9a5f432b57d 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.1 2001/07/15 03:08:33 matt Exp $ */
+/* $NetBSD: rtld_start.S,v 1.2 2001/07/15 17:31:03 matt Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -50,8 +50,8 @@ _rtld_start:
bl _rtld /* call the shared loader */
mov r3, r0 /* save entry point */
- ldr r2, [sp, #4] /* r2 = cleanup */
- ldr r1, [sp] /* r1 = obj_main */
+ ldr r2, [sp, #0] /* r2 = cleanup */
+ ldr r1, [sp, #4] /* r1 = obj_main */
add sp, sp, #8 /* restore stack */
mov r0, r4 /* restore ps_strings */
mov pc, r3 /* jump to the entry point */
diff --git a/libexec/ld.elf_so/reloc.c b/libexec/ld.elf_so/reloc.c
index 4e12bb8a4ff..db43af67ca9 100644
--- a/libexec/ld.elf_so/reloc.c
+++ b/libexec/ld.elf_so/reloc.c
@@ -1,4 +1,4 @@
-/* $NetBSD: reloc.c,v 1.38 2001/07/15 03:09:22 matt Exp $ */
+/* $NetBSD: reloc.c,v 1.39 2001/07/15 17:31:02 matt Exp $ */
/*
* Copyright 1996 John D. Polstra.
@@ -524,13 +524,17 @@ _rtld_relocate_plt_object(obj, rela, addrp, bind_now, dodebug)
return _rtld_reloc_powerpc_plt(obj, rela, bind_now);
#endif
-#if defined(__alpha__) || defined(__i386__) || defined(__m68k__) || \
- defined(__vax__)
+#if defined(__alpha__) || defined(__arm__) || defined(__i386__) || \
+ defined(__m68k__) || defined(__vax__)
if (bind_now || obj->pltgot == NULL) {
const Elf_Sym *def;
const Obj_Entry *defobj;
+#if !defined(__arm__)
assert(ELF_R_TYPE(rela->r_info) == R_TYPE(JMP_SLOT));
+#else
+ assert(ELF_R_TYPE(rela->r_info) == R_TYPE(JUMP_SLOT));
+#endif
def = _rtld_find_symdef(_rtld_objlist, rela->r_info, NULL, obj,
&defobj, true);