[uClibc-cvs] uClibc/ldso/ldso/cris elfinterp.c,1.3,1.4

Erik Andersen andersen at uclibc.org
Tue Sep 9 09:23:15 UTC 2003


Update of /var/cvs/uClibc/ldso/ldso/cris
In directory winder:/tmp/cvs-serv30772/cris

Modified Files:
	elfinterp.c 
Log Message:
Fix cris shared lib loader so it compiles...


Index: elfinterp.c
===================================================================
RCS file: /var/cvs/uClibc/ldso/ldso/cris/elfinterp.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- elfinterp.c	27 Aug 2003 12:59:23 -0000	1.3
+++ elfinterp.c	9 Sep 2003 09:23:12 -0000	1.4
@@ -169,6 +169,7 @@
 	int reloc_type;
 	int symtab_index;
 	char *strtab;
+	char *symname;
 	Elf32_Sym *symtab;
 	ELF_RELOC *rpnt;
 	Elf32_Addr *reloc_addr;
@@ -178,12 +179,12 @@
 	rel_size = rel_size / sizeof(ELF_RELOC);
 	symtab = (Elf32_Sym *) (tpnt->dynamic_info[DT_SYMTAB] + tpnt->loadaddr);
 	strtab = (char *) (tpnt->dynamic_info[DT_STRTAB] + tpnt->loadaddr);
-	symname = strtab + symtab[symtab_index].st_name;
 
 	for (i = 0; i < rel_size; i++, rpnt++) {
 		reloc_addr = (Elf32_Addr *) (tpnt->loadaddr + (Elf32_Addr) rpnt->r_offset);
 		reloc_type = ELF32_R_TYPE(rpnt->r_info);
 		symtab_index = ELF32_R_SYM(rpnt->r_info);
+		symname = strtab + symtab[symtab_index].st_name;
 
 		/*
 		 * Make sure we don't resolv the same symbols as we did
@@ -245,13 +246,13 @@
 
 	symtab = (Elf32_Sym *) (tpnt->dynamic_info[DT_SYMTAB] + tpnt->loadaddr);
 	strtab = (char *) (tpnt->dynamic_info[DT_STRTAB] + tpnt->loadaddr);
-	symname = strtab + symtab[symtab_index].st_name;
 	
 	for (i = 0; i < rel_size; i++, rpnt++) {
 		reloc_addr = (Elf32_Addr *) (tpnt->loadaddr + (Elf32_Addr) rpnt->r_offset);
 		reloc_type = ELF32_R_TYPE(rpnt->r_info);
 		symtab_index = ELF32_R_SYM(rpnt->r_info);
 		symbol_addr = 0;
+		symname = strtab + symtab[symtab_index].st_name;
 
 		if (!symtab_index && tpnt->libtype == program_interpreter)
 			continue;
@@ -363,6 +364,7 @@
 
 	symtab = (Elf32_Sym *) (tpnt->dynamic_info[DT_SYMTAB] + tpnt->loadaddr);
 	strtab = (char *) (tpnt->dynamic_info[DT_STRTAB] + tpnt->loadaddr);
+	symtab_index = ELF32_R_SYM(rpnt->r_info);
 	symname = strtab + symtab[symtab_index].st_name;
 
 	for (i = 0; i < rel_size; i++, rpnt++) {




More information about the uClibc-cvs mailing list