Index: usr.sbin/pmcstat/pmcstat_log.c =================================================================== --- usr.sbin/pmcstat/pmcstat_log.c +++ usr.sbin/pmcstat/pmcstat_log.c @@ -966,21 +966,34 @@ char *funcname, size_t funcname_len) { static int addr2line_warn = 0; - unsigned l; char *sep, cmdline[PATH_MAX], imagepath[PATH_MAX]; + unsigned l; int fd; if (image->pi_addr2line == NULL) { - snprintf(imagepath, sizeof(imagepath), "%s%s.symbols", + /* Try default debug file location. + */ + snprintf(imagepath, sizeof(imagepath), + "/usr/lib/debug/%s%s.debug", args.pa_fsroot, pmcstat_string_unintern(image->pi_fullpath)); fd = open(imagepath, O_RDONLY); if (fd < 0) { - snprintf(imagepath, sizeof(imagepath), "%s%s", + /* Old kernel symbol path. + */ + snprintf(imagepath, sizeof(imagepath), "%s%s.symbols", args.pa_fsroot, pmcstat_string_unintern(image->pi_fullpath)); - } else + fd = open(imagepath, O_RDONLY); + if (fd < 0) { + snprintf(imagepath, sizeof(imagepath), "%s%s", + args.pa_fsroot, + pmcstat_string_unintern( + image->pi_fullpath)); + } + } + if (fd >= 0) close(fd); /* * New addr2line support recursive inline function with -i