diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-11-03 15:13:09 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-11-03 15:13:09 +0000 |
commit | 9333e4142260e5451277a7b50b49b9c636a93b64 (patch) | |
tree | 7c198ebaf222cd357522ad515640c04678687ce2 | |
parent | c6e5fdc8e91b19133840abd5ee53673945719070 (diff) |
Several SH lib loader patches by Stefan Allius <allius@atecom.com>
and "M. R. Brown" <mrbrown@0xd6.org>
-rw-r--r-- | ldso/ldso/ldso.c | 2 | ||||
-rw-r--r-- | ldso/ldso/sh/dl-sysdep.h | 2 | ||||
-rw-r--r-- | ldso/ldso/sh/elfinterp.c | 3 | ||||
-rw-r--r-- | ldso/ldso/sh/ld_sysdep.h | 2 | ||||
-rw-r--r-- | ldso/ldso/sh/resolve.S | 2 |
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 |