[uClibc-cvs] CVS uClibc/ldso/ldso/m68k

CVS User jocke jocke at codepoet.org
Thu Sep 23 07:00:41 UTC 2004


Update of /var/cvs/uClibc/ldso/ldso/m68k
In directory nail:/tmp/cvs-serv6792/m68k

Modified Files:
	elfinterp.c 
Log Message:
Don't allow undefined global symbols to pass.
Move COPY relocs back to _dl_do_reloc().


--- /var/cvs/uClibc/ldso/ldso/m68k/elfinterp.c	2004/08/25 15:18:58	1.19
+++ /var/cvs/uClibc/ldso/ldso/m68k/elfinterp.c	2004/09/23 07:00:40	1.20
@@ -212,11 +212,11 @@
 	     linking local symbols here, so all bases should be
 	     covered.  */
 	  if (!symbol_addr
-	      && ELF32_ST_BIND (symtab[symtab_index].st_info) == STB_GLOBAL)
+	      && ELF32_ST_BIND (symtab[symtab_index].st_info) != STB_WEAK)
 	    {
-	      _dl_dprintf (2, "%s: can't resolve symbol '%s'\n",
-			    _dl_progname, strtab + symtab[symtab_index].st_name);
-	      goof++;
+			_dl_dprintf (2, "%s: can't resolve symbol '%s'\n",
+				     _dl_progname, strtab + symtab[symtab_index].st_name);
+			_dl_exit (1);
 	    }
 	}
       switch (reloc_type)
@@ -254,16 +254,9 @@
 			 + (rpnt->r_addend ? : *reloc_addr));
 	  break;
 	case R_68K_COPY:
-#if 0 /* Do this later.  */
-	  _dl_dprintf (2, "Doing copy");
-	  if (symtab_index)
-	    _dl_dprintf (2, " for symbol %s",
-			  strtab + symtab[symtab_index].st_name);
-	  _dl_dprintf (2, "\n");
-	  _dl_memcpy ((void *) symtab[symtab_index].st_value,
+	  _dl_memcpy ((void *) reloc_addr,
 		      (void *) symbol_addr,
 		      symtab[symtab_index].st_size);
-#endif
 	  break;
 	default:
 	  _dl_dprintf (2, "%s: can't handle reloc type ", _dl_progname);
@@ -303,7 +296,7 @@
   struct elf_resolve *tpnt;
   int symtab_index;
   /* Now parse the relocation information */
-
+  return 0; /* disable now, remove later */
   tpnt = xpnt->dyn;
 
   rpnt = (Elf32_Rela *) (rel_addr + tpnt->loadaddr);



More information about the uClibc-cvs mailing list