summaryrefslogtreecommitdiff
path: root/ldso
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-11-03 15:13:09 +0000
committerEric Andersen <andersen@codepoet.org>2002-11-03 15:13:09 +0000
commit9333e4142260e5451277a7b50b49b9c636a93b64 (patch)
tree7c198ebaf222cd357522ad515640c04678687ce2 /ldso
parentc6e5fdc8e91b19133840abd5ee53673945719070 (diff)
Several SH lib loader patches by Stefan Allius <allius@atecom.com>
and "M. R. Brown" <mrbrown@0xd6.org>
Diffstat (limited to 'ldso')
-rw-r--r--ldso/ldso/ldso.c2
-rw-r--r--ldso/ldso/sh/dl-sysdep.h2
-rw-r--r--ldso/ldso/sh/elfinterp.c3
-rw-r--r--ldso/ldso/sh/ld_sysdep.h2
-rw-r--r--ldso/ldso/sh/resolve.S2
5 files changed, 8 insertions, 3 deletions
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index b81c84092..4c61be223 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -202,6 +202,8 @@ static inline void hexprint(unsigned long x)
}
#endif
+LD_BOOT(unsigned long args) __attribute__ ((unused));
+
LD_BOOT(unsigned long args)
{
unsigned int argc;
diff --git a/ldso/ldso/sh/dl-sysdep.h b/ldso/ldso/sh/dl-sysdep.h
index ee2832436..4e7f8b590 100644
--- a/ldso/ldso/sh/dl-sysdep.h
+++ b/ldso/ldso/sh/dl-sysdep.h
@@ -38,6 +38,8 @@
- (unsigned long)(REL); \
break; \
case R_SH_DIR32: \
+ case R_SH_GLOB_DAT: \
+ case R_SH_JMP_SLOT: \
*(REL) = (SYMBOL) + (RELP)->r_addend; \
break; \
case R_SH_RELATIVE: \
diff --git a/ldso/ldso/sh/elfinterp.c b/ldso/ldso/sh/elfinterp.c
index d94389ef7..734655075 100644
--- a/ldso/ldso/sh/elfinterp.c
+++ b/ldso/ldso/sh/elfinterp.c
@@ -288,8 +288,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
/* handled later on */
break;
case R_SH_DIR32:
- *reloc_addr = symbol_addr + rpnt->r_addend;
- break;
+ case R_SH_GLOB_DAT:
case R_SH_JMP_SLOT:
*reloc_addr = symbol_addr + rpnt->r_addend;
break;
diff --git a/ldso/ldso/sh/ld_sysdep.h b/ldso/ldso/sh/ld_sysdep.h
index ee2832436..4e7f8b590 100644
--- a/ldso/ldso/sh/ld_sysdep.h
+++ b/ldso/ldso/sh/ld_sysdep.h
@@ -38,6 +38,8 @@
- (unsigned long)(REL); \
break; \
case R_SH_DIR32: \
+ case R_SH_GLOB_DAT: \
+ case R_SH_JMP_SLOT: \
*(REL) = (SYMBOL) + (RELP)->r_addend; \
break; \
case R_SH_RELATIVE: \
diff --git a/ldso/ldso/sh/resolve.S b/ldso/ldso/sh/resolve.S
index 7fef6d77f..f3eac9b32 100644
--- a/ldso/ldso/sh/resolve.S
+++ b/ldso/ldso/sh/resolve.S
@@ -79,6 +79,6 @@ _dl_linux_resolve:
.balign 4
3:
- .long _dl_linux_resolver - .jmp_loc
+ .long _dl_linux_resolver@PLT-(.jmp_loc-(.))
.size _dl_linux_resolve, . - _dl_linux_resolve