[uClibc-cvs] CVS uClibc/ldso/ldso/sparc
CVS User jocke
jocke at codepoet.org
Thu Sep 23 07:00:46 UTC 2004
Update of /var/cvs/uClibc/ldso/ldso/sparc
In directory nail:/tmp/cvs-serv6792/sparc
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/sparc/elfinterp.c 2004/08/25 15:19:00 1.19
+++ /var/cvs/uClibc/ldso/ldso/sparc/elfinterp.c 2004/09/23 07:00:45 1.20
@@ -219,10 +219,10 @@
tpnt->symbol_scope, elf_machine_type_class(reloc_type));
if(!symbol_addr &&
- ELF32_ST_BIND(symtab [symtab_index].st_info) == STB_GLOBAL) {
- _dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
- _dl_progname, strtab + symtab[symtab_index].st_name);
- goof++;
+ 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);
+ _dl_exit (1);
};
};
switch(reloc_type){
@@ -263,14 +263,7 @@
((symbol_addr - (unsigned int) reloc_addr) >> 2);
break;
case R_SPARC_COPY:
-#if 0 /* This one is done later */
- _dl_dprintf(2, "Doing copy for symbol ");
- if(symtab_index) _dl_dprintf(2, strtab + symtab[symtab_index].st_name);
- _dl_dprintf(2, "\n");
- _dl_memcpy((void *) symtab[symtab_index].st_value,
- (void *) symbol_addr,
- symtab[symtab_index].st_size);
-#endif
+ _dl_memcpy((void *) reloc_addr, (void *) symbol_addr, symtab[symtab_index].st_size);
break;
default:
_dl_dprintf(2, "%s: can't handle reloc type ", _dl_progname);
@@ -310,7 +303,7 @@
struct elf_resolve *tpnt;
int symtab_index;
/* Now parse the relocation information */
-
+ return 0; /* disable for now, remove later */
tpnt = xpnt->dyn;
rpnt = (Elf32_Rela *) (rel_addr + tpnt->loadaddr);
More information about the uClibc-cvs
mailing list