[uClibc-cvs] uClibc/ldso/ldso/sh elfinterp.c,1.7,1.8

Erik Andersen andersen at uclibc.org
Thu Jan 29 12:18:58 UTC 2004


Update of /var/cvs/uClibc/ldso/ldso/sh
In directory nail:/tmp/cvs-serv13904/ldso/sh

Modified Files:
	elfinterp.c 
Log Message:
Modify interfaces for _dl_parse_relocation_information()
_dl_parse_lazy_relocation_information() and _dl_parse_copy_information()
so they are all consistant, allowing for future consolidation.

Trim some trailing whitespace as well.


Index: elfinterp.c
===================================================================
RCS file: /var/cvs/uClibc/ldso/ldso/sh/elfinterp.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- elfinterp.c	11 Sep 2003 10:26:16 -0000	1.7
+++ elfinterp.c	29 Jan 2004 12:18:55 -0000	1.8
@@ -1,7 +1,7 @@
 /* vi: set sw=4 ts=4: */
 /* SuperH ELF shared library loader suppport
  *
- * Copyright (C) 2002, Stefan Allius <allius at atecom.com> and 
+ * Copyright (C) 2002, Stefan Allius <allius at atecom.com> and
  *                     Eddie C. Dost <ecd at atecom.com>
  *
  * All rights reserved.
@@ -44,9 +44,9 @@
 static const char *
 _dl_reltypes(int type)
 {
-  static char buf[22];  
+  static char buf[22];
   const char *str;
-  
+
   if (type >= (int)(sizeof (_dl_reltypes_tab)/sizeof(_dl_reltypes_tab[0])) ||
       NULL == (str = _dl_reltypes_tab[type]))
   {
@@ -55,7 +55,7 @@
   return str;
 }
 
-static 
+static
 void debug_sym(Elf32_Sym *symtab,char *strtab,int symtab_index)
 {
   if(_dl_debug_symbols)
@@ -80,12 +80,12 @@
     const char *sym;
     symtab_index = ELF32_R_SYM(rpnt->r_info);
     sym = symtab_index ? strtab + symtab[symtab_index].st_name : "sym=0x0";
-    
+
   if(_dl_debug_symbols)
 	  _dl_dprintf(_dl_debug_file, "\n\t");
   else
 	  _dl_dprintf(_dl_debug_file, "\n%s\n\t", sym);
-    
+
 #ifdef ELF_USES_RELOCA
     _dl_dprintf(_dl_debug_file, "%s\toffset=%x\taddend=%x",
 		_dl_reltypes(ELF32_R_TYPE(rpnt->r_info)),
@@ -137,13 +137,13 @@
 	symname = strtab + symtab[symtab_index].st_name;
 
 	if (reloc_type != R_SH_JMP_SLOT) {
-	  _dl_dprintf(2, "%s: Incorrect relocation type in jump relocations\n", 
+	  _dl_dprintf(2, "%s: Incorrect relocation type in jump relocations\n",
 		       _dl_progname);
 	  _dl_exit(1);
 	}
-	
+
 	/* Address of jump instruction to fix up */
-	instr_addr = ((unsigned long) this_reloc->r_offset + 
+	instr_addr = ((unsigned long) this_reloc->r_offset +
 			(unsigned long) tpnt->loadaddr);
 	got_addr = (char **) instr_addr;
 
@@ -155,7 +155,7 @@
 		if (new_addr) {
 			return (unsigned long) new_addr;
 		}
-		
+
 		_dl_dprintf(2, "%s: can't resolve symbol '%s'\n", _dl_progname, symname);
 		_dl_exit(1);
 	}
@@ -166,7 +166,7 @@
 		if (_dl_debug_bindings)
 		{
 			_dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
-			if(_dl_debug_detail) _dl_dprintf(_dl_debug_file, 
+			if(_dl_debug_detail) _dl_dprintf(_dl_debug_file,
 					"\n\tpatched %x ==> %x @ %x\n", *got_addr, new_addr, got_addr);
 		}
 	}
@@ -202,9 +202,9 @@
 
 	  for (i = 0; i < rel_size; i++, rpnt++) {
 	        int res;
-	    
+
 		symtab_index = ELF32_R_SYM(rpnt->r_info);
-		
+
 		/* When the dynamic linker bootstrapped itself, it resolved some symbols.
 		   Make sure we do not do them again */
 		if (!symtab_index && tpnt->libtype == program_interpreter)
@@ -223,10 +223,10 @@
 		if (res==0) continue;
 
 		_dl_dprintf(2, "\n%s: ",_dl_progname);
-		
+
 		if (symtab_index)
 		  _dl_dprintf(2, "symbol '%s': ", strtab + symtab[symtab_index].st_name);
-		  
+
 		if (res <0)
 		{
 		        int reloc_type = ELF32_R_TYPE(rpnt->r_info);
@@ -234,7 +234,7 @@
 			_dl_dprintf(2, "can't handle reloc type %s\n ", _dl_reltypes(reloc_type));
 #else
 			_dl_dprintf(2, "can't handle reloc type %x\n", reloc_type);
-#endif			
+#endif
 			_dl_exit(-res);
 		}
 		else if (res >0)
@@ -259,7 +259,7 @@
 #if defined (__SUPPORT_LD_DEBUG__)
 	unsigned long old_val;
 #endif
-  
+
 	reloc_addr = (unsigned long *)(intptr_t) (tpnt->loadaddr + (unsigned long) rpnt->r_offset);
 	reloc_type = ELF32_R_TYPE(rpnt->r_info);
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
@@ -269,7 +269,7 @@
 	if (symtab_index) {
 
 
-		symbol_addr = (unsigned long) _dl_find_hash(symname, scope, 
+		symbol_addr = (unsigned long) _dl_find_hash(symname, scope,
 				(reloc_type == R_SH_JMP_SLOT ? tpnt : NULL), symbolrel);
 
 		/*
@@ -318,8 +318,8 @@
 
 	return 0;
 }
- 
-	  
+
+
 static int
 _dl_do_lazy_reloc (struct elf_resolve *tpnt, struct dyn_elf *scope,
 		   ELF_RELOC *rpnt, Elf32_Sym *symtab, char *strtab)
@@ -335,7 +335,7 @@
 
 	reloc_addr = (unsigned long *)(intptr_t) (tpnt->loadaddr + (unsigned long) rpnt->r_offset);
 	reloc_type = ELF32_R_TYPE(rpnt->r_info);
-  
+
 #if defined (__SUPPORT_LD_DEBUG__)
 	old_val = *reloc_addr;
 #endif
@@ -353,7 +353,7 @@
 		_dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x", old_val, *reloc_addr, reloc_addr);
 #endif
 	return 0;
-	
+
 }
 
 /* This is done as a separate step, because there are cases where
@@ -365,7 +365,7 @@
 /* No, there are cases where the SVr4 linker fails to emit COPY relocs
    at all */
 static int
-_dl_do_copy (struct elf_resolve *tpnt, struct dyn_elf *scope,
+_dl_do_copy_reloc (struct elf_resolve *tpnt, struct dyn_elf *scope,
 	     ELF_RELOC *rpnt, Elf32_Sym *symtab, char *strtab)
 {
         int reloc_type;
@@ -374,15 +374,15 @@
 	unsigned long symbol_addr;
 	int goof = 0;
 	char*symname;
-	  
+
 	reloc_addr = (unsigned long *)(intptr_t) (tpnt->loadaddr + (unsigned long) rpnt->r_offset);
 	reloc_type = ELF32_R_TYPE(rpnt->r_info);
-	if (reloc_type != R_SH_COPY) 
+	if (reloc_type != R_SH_COPY)
 	    return 0;
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
 	symbol_addr = 0;
 	symname      = strtab + symtab[symtab_index].st_name;
-		
+
 	if (symtab_index) {
 
 		symbol_addr = (unsigned long) _dl_find_hash(symname, scope, NULL, copyrel);
@@ -395,7 +395,7 @@
 			     symname, symtab[symtab_index].st_size,
 			     symbol_addr, symtab[symtab_index].st_value);
 #endif
-		_dl_memcpy((char *) symtab[symtab_index].st_value, 
+		_dl_memcpy((char *) symtab[symtab_index].st_value,
 			(char *) symbol_addr, symtab[symtab_index].st_size);
 	}
 
@@ -403,25 +403,21 @@
 }
 
 
-void _dl_parse_lazy_relocation_information(struct elf_resolve *tpnt, 
+void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
 	unsigned long rel_addr, unsigned long rel_size, int type)
 {
-	(void) type;
-	(void)_dl_parse(tpnt, NULL, rel_addr, rel_size, _dl_do_lazy_reloc);
+	(void)_dl_parse(rpnt->dyn, NULL, rel_addr, rel_size, _dl_do_lazy_reloc);
 }
 
-int _dl_parse_relocation_information(struct elf_resolve *tpnt, 
+int _dl_parse_relocation_information(struct dyn_elf *rpnt,
 	unsigned long rel_addr, unsigned long rel_size, int type)
 {
-	(void) type;
-	return _dl_parse(tpnt, tpnt->symbol_scope, rel_addr, rel_size, _dl_do_reloc);
+	return _dl_parse(rpnt->dyn, rpnt->dyn->symbol_scope, rel_addr, rel_size, _dl_do_reloc);
 }
 
-int _dl_parse_copy_information(struct dyn_elf *xpnt, unsigned long rel_addr, 
-	unsigned long rel_size, int type)
+int _dl_parse_copy_information(struct dyn_elf *rpnt,
+	unsigned long rel_addr, unsigned long rel_size, int type)
 {
-	(void) type;
-	return _dl_parse(xpnt->dyn, xpnt->next, rel_addr, rel_size, _dl_do_copy);
+	return _dl_parse(rpnt->dyn, rpnt->next, rel_addr, rel_size, _dl_do_copy_reloc);
 }
 
-




More information about the uClibc-cvs mailing list