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 | 
