summaryrefslogtreecommitdiff
path: root/ldso/ldso/arm/elfinterp.c
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2006-11-10 20:41:49 +0000
committerEric Andersen <andersen@codepoet.org>2006-11-10 20:41:49 +0000
commit5be7aba864225afa0538d166e6166ffe05af4288 (patch)
tree79000b2a1e5e81757da1ca77bbd7380e26b89720 /ldso/ldso/arm/elfinterp.c
parent90c3c3ed5eec1062168d1ac0beb41044a9de7c58 (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.c4
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)
{