ElfW(Phdr) *ppnt;
ElfW(Dyn) *dpnt;
char *lpntstr;
- int i, goof = 0, unlazy = 0, trace_loaded_objects = 0;
+ int i, unlazy = 0, trace_loaded_objects = 0;
struct dyn_elf *rpnt;
struct elf_resolve *tcurr;
struct elf_resolve *tpnt1;
* order so that COPY directives work correctly.
*/
if (_dl_symbol_tables)
- goof += _dl_fixup(_dl_symbol_tables, unlazy);
+ if (_dl_fixup(_dl_symbol_tables, unlazy))
+ _dl_exit(-1);
for (tpnt = _dl_loaded_modules; tpnt; tpnt = tpnt->next) {
if (tpnt->relro_size)
finaladdr = (Elf32_Addr) _dl_find_hash(symname,
tpnt->symbol_scope, tpnt, ELF_RTYPE_CLASS_PLT);
if (unlikely(!finaladdr)) {
- _dl_dprintf(2, "%s: can't resolve symbol '%s'\n", _dl_progname, symname);
+ _dl_dprintf(2, "%s: can't resolve symbol '%s' in lib '%s'.\n", _dl_progname, symname, tpnt->libname);
_dl_exit(1);
};
finaladdr += this_reloc->r_addend;
{
int reloc_type = ELF32_R_TYPE(rpnt->r_info);
#if defined (__SUPPORT_LD_DEBUG__)
- _dl_dprintf(2, "can't handle reloc type %s\n ", _dl_reltypes(reloc_type));
+ _dl_dprintf(2, "can't handle reloc type '%s' in lib '%s'\n", _dl_reltypes(reloc_type), tpnt->libname);
#else
- _dl_dprintf(2, "can't handle reloc type %x\n", reloc_type);
+ _dl_dprintf(2, "can't handle reloc type %x in lib '%s'\n", reloc_type, tpnt->libname);
#endif
- _dl_exit(-res);
+ return res;
}
if (unlikely(res >0))
{
- _dl_dprintf(2, "can't resolve symbol\n");
+ _dl_dprintf(2, "can't resolve symbol in lib '%s'.\n", tpnt->libname);
return res;
}
}