[uClibc-cvs] uClibc/ldso/ldso/sh64 elfinterp.c,1.1,1.2

Erik Andersen andersen at uclibc.org
Thu Jan 29 12:19:00 UTC 2004


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

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/sh64/elfinterp.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- elfinterp.c	17 Dec 2003 08:07:14 -0000	1.1
+++ elfinterp.c	29 Jan 2004 12:18:56 -0000	1.2
@@ -1,7 +1,7 @@
 /* vi: set sw=8 ts=8: */
 /*
  * ldso/ldso/sh64/elfinterp.c
- * 
+ *
  * SuperH (sh64) ELF shared library loader suppport
  *
  * Copyright (C) 2003  Paul Mundt <lethal at linux-sh.org>
@@ -81,13 +81,13 @@
 
 static const char *_dl_reltypes(int type)
 {
-	static char buf[22];  
+	static char buf[22];
 	const char *str;
 	int tabsize;
 
 	tabsize = sizeof(_dl_reltypes_tab)/sizeof(_dl_reltypes_tab[0]);
 	str	= _dl_reltypes_tab[type];
-  
+
   	if (type >= tabsize || str == NULL)
 		str =_dl_simple_ltoa(buf, (unsigned long)(type));
 
@@ -123,7 +123,7 @@
 		symtab_index = ELF32_R_SYM(rpnt->r_info);
 		sym = symtab_index ? strtab + symtab[symtab_index].st_name
 				   : "sym=0x0";
- 
+
 		_dl_dprintf(_dl_debug_file, "\n%s\n\t", sym);
 	}
 
@@ -178,13 +178,13 @@
 	symname = strtab + symtab[symtab_index].st_name;
 
 	if (reloc_type != R_SH_JMP_SLOT) {
-		_dl_dprintf(2, "%s: Incorrect relocation type in jump reloc\n", 
+		_dl_dprintf(2, "%s: Incorrect relocation type in jump reloc\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;
 
@@ -196,7 +196,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);
@@ -209,7 +209,7 @@
 				    symname);
 
 			if (_dl_debug_detail)
-				_dl_dprintf(_dl_debug_file, 
+				_dl_dprintf(_dl_debug_file,
 					    "\n\tpatched %x ==> %x @ %x\n",
 					    *got_addr, new_addr, got_addr);
 		}
@@ -247,9 +247,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)
@@ -268,11 +268,11 @@
 			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);
 
@@ -281,7 +281,7 @@
 					"%s\n", _dl_reltypes(reloc_type)
 #else
 					"%x\n", reloc_type
-#endif			
+#endif
 			);
 
 			_dl_exit(-res);
@@ -306,7 +306,7 @@
 #ifdef __SUPPORT_LD_DEBUG__
 	unsigned long old_val;
 #endif
-  
+
 	reloc_type   = ELF32_R_TYPE(rpnt->r_info);
 	symtab_index = ELF32_R_SYM(rpnt->r_info);
 	symbol_addr  = 0;
@@ -318,7 +318,7 @@
 	if (symtab_index) {
 		int stb;
 
-		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);
 
@@ -422,7 +422,7 @@
 
 	return 0;
 }
- 
+
 static int _dl_do_lazy_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 			     ELF_RELOC *rpnt, Elf32_Sym *symtab, char *strtab)
 {
@@ -437,7 +437,7 @@
 	lsb          = symtab[symtab_index].st_other & 4;
 	reloc_addr   = (unsigned long *)(intptr_t)
 		(tpnt->loadaddr + (unsigned long)rpnt->r_offset);
-	
+
 #ifdef __SUPPORT_LD_DEBUG__
 	old_val = *reloc_addr;
 #endif
@@ -469,7 +469,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,
+static int _dl_do_copy_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 		       ELF_RELOC *rpnt, Elf32_Sym *symtab, char *strtab)
 {
         int reloc_type;
@@ -478,18 +478,18 @@
 	unsigned long symbol_addr;
 	char *symname;
 	int goof = 0;
-	  
+
 	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);
@@ -507,30 +507,28 @@
 				    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);
 	}
 
 	return goof;
 }
 
-void _dl_parse_lazy_relocation_information(struct elf_resolve *tpnt,
-		unsigned long rel_addr, unsigned long rel_size, int type)
+void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
+	unsigned long rel_addr, unsigned long rel_size, int type)
 {
-	_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,
-		unsigned long rel_addr, unsigned long rel_size, int type)
+int _dl_parse_relocation_information(struct dyn_elf *rpnt,
+	unsigned long rel_addr, unsigned long rel_size, int 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)
 {
-	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