Messages in this thread Patch in this message | | | From | Vincent Whitchurch <> | Subject | [PATCH] perf annotate: Work with vmlinux outside symfs | Date | Fri, 25 Nov 2022 12:42:09 +0100 |
| |
It is currently possible to use --symfs along with a vmlinux which lies outside of the symfs by passing an absolute path to --vmlinux, thanks to the check in dso__load_vmlinux() which handles this explicitly.
However, the annotate code lacks this check and thus perf annotate does not work ("Internal error: Invalid -1 error code") for kernel functions with this combination. Add the missing handling.
Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com> --- tools/perf/util/annotate.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index db475e44f42f..52bdec764545 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -1695,7 +1695,11 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil * cache, or is just a kallsyms file, well, lets hope that this * DSO is the same as when 'perf record' ran. */ - __symbol__join_symfs(filename, filename_size, dso->long_name); + if (dso->kernel && dso->long_name[0] == '/') + snprintf(filename, filename_size, + "%s", dso->long_name); + else + __symbol__join_symfs(filename, filename_size, dso->long_name); mutex_lock(&dso->lock); if (access(filename, R_OK) && errno == ENOENT && dso->nsinfo) { -- 2.34.1
| |