diff options
| author | matt <matt@NetBSD.org> | 2001-07-15 17:31:02 +0000 |
|---|---|---|
| committer | matt <matt@NetBSD.org> | 2001-07-15 17:31:02 +0000 |
| commit | 2285430c7e1c86876d33e1ec65d6a4ac49a1f9c7 (patch) | |
| tree | 8000d994ff1a3dfabacaac88a7f181c0d3b9040b /libexec | |
| parent | 126898a2cd99a8d83e2b59aa57630f22f3c0ca59 (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.S | 6 | ||||
| -rw-r--r-- | libexec/ld.elf_so/reloc.c | 10 |
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); |
