Index: libexec/rtld-elf/rtld.c =================================================================== --- libexec/rtld-elf/rtld.c +++ libexec/rtld-elf/rtld.c @@ -3291,19 +3291,21 @@ handle == RTLD_SELF) { /* ... caller included */ if (handle == RTLD_NEXT) obj = globallist_next(obj); - TAILQ_FOREACH_FROM(obj, &obj_list, next) { - if (obj->marker) - continue; - res = symlook_obj(&req, obj); - if (res == 0) { - if (def == NULL || - ELF_ST_BIND(req.sym_out->st_info) != STB_WEAK) { - def = req.sym_out; - defobj = req.defobj_out; - if (ELF_ST_BIND(def->st_info) != STB_WEAK) - break; + if (obj != NULL) { + TAILQ_FOREACH_FROM(obj, &obj_list, next) { + if (obj->marker) + continue; + res = symlook_obj(&req, obj); + if (res == 0) { + if (def == NULL || + ELF_ST_BIND(req.sym_out->st_info) != STB_WEAK) { + def = req.sym_out; + defobj = req.defobj_out; + if (ELF_ST_BIND(def->st_info) != STB_WEAK) + break; + } + } } - } } /* * Search the dynamic linker itself, and possibly resolve the