@@ -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;
@@ -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; \
case R_SH_RELATIVE: \
@@ -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;
@@ -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