diff options
author | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2004-09-23 07:00:45 +0000 |
---|---|---|
committer | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2004-09-23 07:00:45 +0000 |
commit | ea64c4b3c6fbf77577b7019182bc93cabe21fdd5 (patch) | |
tree | f78beaaff3a65188212a70a4dc35f28b9208306f /ldso/ldso/sh | |
parent | 6dfefd64985e6a6872aebf0c53a5f2c9da5b0da9 (diff) |
Don't allow undefined global symbols to pass.
Move COPY relocs back to _dl_do_reloc().
Diffstat (limited to 'ldso/ldso/sh')
-rw-r--r-- | ldso/ldso/sh/elfinterp.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/ldso/ldso/sh/elfinterp.c b/ldso/ldso/sh/elfinterp.c index 3e4a36bac..821b44cbc 100644 --- a/ldso/ldso/sh/elfinterp.c +++ b/ldso/ldso/sh/elfinterp.c @@ -263,12 +263,10 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope, * have been intentional. We should not be linking local symbols * here, so all bases should be covered. */ - if (!symbol_addr && ELF32_ST_BIND(symtab[symtab_index].st_info) == STB_GLOBAL) { -#if defined (__SUPPORT_LD_DEBUG__) - _dl_dprintf(2, "\tglobal symbol '%s' already defined in '%s'\n", - symname, tpnt->libname); -#endif - return 0; + if (!symbol_addr && 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); } } |