[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1462525154-125656-3-git-send-email-hekuang@huawei.com>
Date: Fri, 6 May 2016 08:59:08 +0000
From: He Kuang <hekuang@...wei.com>
To: <peterz@...radead.org>, <mingo@...hat.com>, <acme@...nel.org>,
<alexander.shishkin@...ux.intel.com>, <jolsa@...hat.com>,
<wangnan0@...wei.com>, <hekuang@...wei.com>, <jpoimboe@...hat.com>,
<ak@...ux.intel.com>, <eranian@...gle.com>, <namhyung@...nel.org>,
<adrian.hunter@...el.com>, <sukadev@...ux.vnet.ibm.com>,
<masami.hiramatsu.pt@...achi.com>, <tumanova@...ux.vnet.ibm.com>,
<kan.liang@...el.com>, <penberg@...nel.org>, <dsahern@...il.com>
CC: <linux-kernel@...r.kernel.org>
Subject: [PATCH 2/8] perf script: Add options for custom vdso name
When unwinding callchain on different machine, vdso info should be
provided so the unwind process won't be interrupted if address fell
into vdso region.
Signed-off-by: He Kuang <hekuang@...wei.com>
---
tools/perf/builtin-script.c | 2 ++
tools/perf/util/dso.c | 7 +++++++
tools/perf/util/dso.h | 1 +
tools/perf/util/symbol.c | 1 +
tools/perf/util/symbol.h | 1 +
5 files changed, 12 insertions(+)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 8f6ab2a..c88b547 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -2001,6 +2001,8 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
"file", "vmlinux pathname"),
OPT_STRING(0, "kallsyms", &symbol_conf.kallsyms_name,
"file", "kallsyms pathname"),
+ OPT_STRING(0, "vdso", &symbol_conf.vdso_name,
+ "file", "vdso pathname"),
OPT_BOOLEAN('G', "hide-call-graph", &no_callchain,
"When printing symbols do not display call chain"),
OPT_STRING(0, "symfs", &symbol_conf.symfs, "directory",
diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
index 8e639543..344db10 100644
--- a/tools/perf/util/dso.c
+++ b/tools/perf/util/dso.c
@@ -21,6 +21,7 @@ char dso__symtab_origin(const struct dso *dso)
[DSO_BINARY_TYPE__OPENEMBEDDED_DEBUGINFO] = 'o',
[DSO_BINARY_TYPE__BUILDID_DEBUGINFO] = 'b',
[DSO_BINARY_TYPE__SYSTEM_PATH_DSO] = 'd',
+ [DSO_BINARY_TYPE__SYSTEM_PATH_DSO_CUSTOM] = 'r',
[DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE] = 'K',
[DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE_COMP] = 'm',
[DSO_BINARY_TYPE__GUEST_KALLSYMS] = 'g',
@@ -113,6 +114,11 @@ int dso__read_binary_type_filename(const struct dso *dso,
build_id_hex, build_id_hex + 2);
break;
+ case DSO_BINARY_TYPE__SYSTEM_PATH_DSO_CUSTOM:
+ {
+ snprintf(filename, size, "%s", symbol_conf.vdso_name);
+ break;
+ }
case DSO_BINARY_TYPE__VMLINUX:
case DSO_BINARY_TYPE__GUEST_VMLINUX:
case DSO_BINARY_TYPE__SYSTEM_PATH_DSO:
@@ -487,6 +493,7 @@ static void try_to_open_dso(struct dso *dso, struct machine *machine)
enum dso_binary_type binary_type_data[] = {
DSO_BINARY_TYPE__BUILD_ID_CACHE,
DSO_BINARY_TYPE__SYSTEM_PATH_DSO,
+ DSO_BINARY_TYPE__SYSTEM_PATH_DSO_CUSTOM,
DSO_BINARY_TYPE__NOT_FOUND,
};
int i = 0;
diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
index 0953280..f55ce5b 100644
--- a/tools/perf/util/dso.h
+++ b/tools/perf/util/dso.h
@@ -23,6 +23,7 @@ enum dso_binary_type {
DSO_BINARY_TYPE__UBUNTU_DEBUGINFO,
DSO_BINARY_TYPE__BUILDID_DEBUGINFO,
DSO_BINARY_TYPE__SYSTEM_PATH_DSO,
+ DSO_BINARY_TYPE__SYSTEM_PATH_DSO_CUSTOM,
DSO_BINARY_TYPE__GUEST_KMODULE,
DSO_BINARY_TYPE__GUEST_KMODULE_COMP,
DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE,
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index e7588dc..93f348f 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1359,6 +1359,7 @@ static bool dso__is_compatible_symtab_type(struct dso *dso, bool kmod,
case DSO_BINARY_TYPE__JAVA_JIT:
case DSO_BINARY_TYPE__DEBUGLINK:
case DSO_BINARY_TYPE__SYSTEM_PATH_DSO:
+ case DSO_BINARY_TYPE__SYSTEM_PATH_DSO_CUSTOM:
case DSO_BINARY_TYPE__FEDORA_DEBUGINFO:
case DSO_BINARY_TYPE__UBUNTU_DEBUGINFO:
case DSO_BINARY_TYPE__BUILDID_DEBUGINFO:
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index c8b7544..4e6910e 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -114,6 +114,7 @@ struct symbol_conf {
report_hierarchy;
const char *vmlinux_name,
*kallsyms_name,
+ *vdso_name,
*source_prefix,
*field_sep;
const char *default_guest_vmlinux_name,
--
1.8.5.2
Powered by blists - more mailing lists