static struct dso *dsos__findnew(const char *name) { struct dso *dso = dsos__find(name); int nr; if (dso) return dso; dso = dso__new(name, 0); if (!dso) goto out_delete_dso; nr = dso__load(dso, NULL, verbose); if (nr < 0) { if (verbose) fprintf(stderr, "Failed to open: %s\n", name); goto out_delete_dso; } if (!nr && verbose) { fprintf(stderr, "No symbols found in: %s, maybe install a debug package?\n", name); } dsos__add(dso); return dso; out_delete_dso: dso__delete(dso); return NULL; }
struct dso *vdso__dso_findnew(struct list_head *head) { struct dso *dso = dsos__find(head, VDSO__MAP_NAME, true); if (!dso) { char *file; file = get_file(); if (!file) return NULL; dso = dso__new(VDSO__MAP_NAME); if (dso != NULL) { dsos__add(head, dso); dso__set_long_name(dso, file); } } return dso; }