]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
perf unwind: Unwind with libdw doesn't take symfs into account
authorMartin Vuille <jpmv27@aim.com>
Sun, 11 Feb 2018 21:24:20 +0000 (16:24 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 Feb 2019 16:34:52 +0000 (17:34 +0100)
[ Upstream commit 3d20c6246690219881786de10d2dda93f616d0ac ]

Path passed to libdw for unwinding doesn't include symfs path
if specified, so unwinding fails because ELF file is not found.

Similar to unwinding with libunwind, pass symsrc_filename instead
of long_name. If there is no symsrc_filename, fallback to long_name.

Signed-off-by: Martin Vuille <jpmv27@aim.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/20180211212420.18388-1-jpmv27@aim.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/perf/util/unwind-libdw.c

index dbd9954eda4a67d2b3e529e34ea93818141f0a27..517c6afb27071dd12921ef505b38e3b4461c1a51 100644 (file)
@@ -47,7 +47,7 @@ static int __report_module(struct addr_location *al, u64 ip,
 
        if (!mod)
                mod = dwfl_report_elf(ui->dwfl, dso->short_name,
-                                     dso->long_name, -1, al->map->start,
+                                     (dso->symsrc_filename ? dso->symsrc_filename : dso->long_name), -1, al->map->start,
                                      false);
 
        return mod && dwfl_addrmodule(ui->dwfl, ip) == mod ? 0 : -1;