diff options
author | Fabien Thomas <fabient@FreeBSD.org> | 2015-10-08 09:46:35 +0000 |
---|---|---|
committer | Fabien Thomas <fabient@FreeBSD.org> | 2015-10-08 09:46:35 +0000 |
commit | 66ca84a7ba2411b82e948f7db2b932679d7d9a44 (patch) | |
tree | 8ab0baf22d2c375cbd7d04c005e2dc0a6a65a104 | |
parent | 2663942208e9f70aa402c3db9dfb7141f18c354a (diff) | |
download | src-66ca84a7ba2411b82e948f7db2b932679d7d9a44.tar.gz src-66ca84a7ba2411b82e948f7db2b932679d7d9a44.zip |
Fix for r288176 changes related to debug symbols move.
Reviewed by: emaste
Sponsored by: Stormshield
Notes
Notes:
svn path=/head/; revision=289023
-rw-r--r-- | usr.sbin/pmcstat/pmcstat_log.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/usr.sbin/pmcstat/pmcstat_log.c b/usr.sbin/pmcstat/pmcstat_log.c index fbc358d6129d..ea9b547ff963 100644 --- a/usr.sbin/pmcstat/pmcstat_log.c +++ b/usr.sbin/pmcstat/pmcstat_log.c @@ -966,21 +966,32 @@ pmcstat_image_addr2line(struct pmcstat_image *image, uintfptr_t addr, 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 |