diff options
author | Eric Andersen <andersen@codepoet.org> | 2006-11-10 20:41:49 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2006-11-10 20:41:49 +0000 |
commit | 5be7aba864225afa0538d166e6166ffe05af4288 (patch) | |
tree | 79000b2a1e5e81757da1ca77bbd7380e26b89720 /ldso/ldso/arm/elfinterp.c | |
parent | 90c3c3ed5eec1062168d1ac0beb41044a9de7c58 (diff) |
This change reimplements the ARM _dl_linux_resolve entry point - this is
called to resolve DLL PLT entries. The assembler is changed to be thumb
compatible and slightly faster, the C function, _dl_linux_resolver (note
the extra r) is changed to take a byte address in place of an 8 byte
count (faster in caller and callee, and slightly easier to understand).
Diffstat (limited to 'ldso/ldso/arm/elfinterp.c')
-rw-r--r-- | ldso/ldso/arm/elfinterp.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ldso/ldso/arm/elfinterp.c b/ldso/ldso/arm/elfinterp.c index 4ccfba769..37531126a 100644 --- a/ldso/ldso/arm/elfinterp.c +++ b/ldso/ldso/arm/elfinterp.c @@ -57,7 +57,7 @@ unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry) rel_addr = (ELF_RELOC *) tpnt->dynamic_info[DT_JMPREL]; - this_reloc = rel_addr + (reloc_entry >> 3); + this_reloc = rel_addr + reloc_entry; reloc_type = ELF32_R_TYPE(this_reloc->r_info); symtab_index = ELF32_R_SYM(this_reloc->r_info); @@ -85,7 +85,9 @@ unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry) _dl_exit(1); } #if defined (__SUPPORT_LD_DEBUG__) +#if !defined __SUPPORT_LD_DEBUG_EARLY__ if ((unsigned long) got_addr < 0x40000000) +#endif { if (_dl_debug_bindings) { |