diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -4956,7 +4956,12 @@ const char *fmt; int c; - fmt = strncmp(name, "lib", 3) == 0 ? fmt1 : fmt2; /* XXX bogus */ + if (fmt1 == NULL) + fmt = fmt2; + else + /* XXX bogus */ + fmt = strncmp(name, "lib", 3) == 0 ? fmt1 : fmt2; + while ((c = *fmt++) != '\0') { switch (c) { default: @@ -5038,19 +5043,23 @@ } if (show_preload) { + if (ld_get_env_var(LD_TRACE_LOADED_OBJECTS_FMT2) == NULL) + fmt2 = "\t%p (%x)\n"; first_spurious = true; + TAILQ_FOREACH(obj, &obj_list, next) { if (obj->marker || obj == obj_main || obj->traced) continue; - if (first_spurious) { + if (list_containers && first_spurious) { rtld_printf("[preloaded]\n"); first_spurious = false; } + Name_Entry *fname = STAILQ_FIRST(&obj->names); name = fname == NULL ? "" : fname->name; trace_print_obj(obj, name, obj->path, main_local, - fmt1, fmt2); + NULL, fmt2); } } }