diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2019-11-22 16:39:06 +0100 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2019-11-26 15:07:45 +0100 |
commit | 540a63ea30c86b2785769b9ae713efbfa7547fde (patch) | |
tree | 12afc33c8cc4b9416bc72724ddcd5c4c599cb5e0 /tools/perf/builtin-script.c | |
parent | Merge remote-tracking branch 'torvalds/master' into perf/core (diff) | |
download | linux-540a63ea30c86b2785769b9ae713efbfa7547fde.tar.xz linux-540a63ea30c86b2785769b9ae713efbfa7547fde.zip |
perf script: Move map__fprintf_srccode() to near its only user
No need to have it elsewhere.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lkml.kernel.org/n/tip-8cw846pudpxo0xdkvi9qnvrh@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-script.c')
-rw-r--r-- | tools/perf/builtin-script.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index f86c5cce5b2c..7b2f0922050c 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -932,6 +932,48 @@ static int grab_bb(u8 *buffer, u64 start, u64 end, return len; } +static int map__fprintf_srccode(struct map *map, u64 addr, FILE *fp, struct srccode_state *state) +{ + char *srcfile; + int ret = 0; + unsigned line; + int len; + char *srccode; + + if (!map || !map->dso) + return 0; + srcfile = get_srcline_split(map->dso, + map__rip_2objdump(map, addr), + &line); + if (!srcfile) + return 0; + + /* Avoid redundant printing */ + if (state && + state->srcfile && + !strcmp(state->srcfile, srcfile) && + state->line == line) { + free(srcfile); + return 0; + } + + srccode = find_sourceline(srcfile, line, &len); + if (!srccode) + goto out_free_line; + + ret = fprintf(fp, "|%-8d %.*s", line, len, srccode); + + if (state) { + state->srcfile = srcfile; + state->line = line; + } + return ret; + +out_free_line: + free(srcfile); + return ret; +} + static int print_srccode(struct thread *thread, u8 cpumode, uint64_t addr) { struct addr_location al; |