The __symbol__fprintf_symname_offs() always shows symbol offsets.  So
there's no difference between 'perf script -F ip,sym' and 'perf script
-F ip,sym,symoff'.  I don't think it's a desired behavior..

Signed-off-by: Namhyung Kim <namhy...@kernel.org>
---
 tools/perf/util/evsel_fprintf.c  |  6 ++++--
 tools/perf/util/symbol.h         |  3 ++-
 tools/perf/util/symbol_fprintf.c | 11 ++++++-----
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/tools/perf/util/evsel_fprintf.c b/tools/perf/util/evsel_fprintf.c
index 3674e77ad640..c039cdb22b5d 100644
--- a/tools/perf/util/evsel_fprintf.c
+++ b/tools/perf/util/evsel_fprintf.c
@@ -140,7 +140,8 @@ int sample__fprintf_callchain(struct perf_sample *sample, 
int left_alignment,
 
                                if (print_symoffset) {
                                        printed += 
__symbol__fprintf_symname_offs(node->sym, &node_al,
-                                                                               
  print_unknown_as_addr, fp);
+                                                                               
  print_unknown_as_addr,
+                                                                               
  true, fp);
                                } else {
                                        printed += 
__symbol__fprintf_symname(node->sym, &node_al,
                                                                             
print_unknown_as_addr, fp);
@@ -191,7 +192,8 @@ int sample__fprintf_sym(struct perf_sample *sample, struct 
addr_location *al,
                        printed += fprintf(fp, " ");
                        if (print_symoffset) {
                                printed += 
__symbol__fprintf_symname_offs(al->sym, al,
-                                                                         
print_unknown_as_addr, fp);
+                                                                         
print_unknown_as_addr,
+                                                                         true, 
fp);
                        } else {
                                printed += __symbol__fprintf_symname(al->sym, 
al,
                                                                     
print_unknown_as_addr, fp);
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index 699f7cbcfe72..bfae76bd973e 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -280,7 +280,8 @@ void symbol__elf_init(void);
 struct symbol *symbol__new(u64 start, u64 len, u8 binding, const char *name);
 size_t __symbol__fprintf_symname_offs(const struct symbol *sym,
                                      const struct addr_location *al,
-                                     bool unknown_as_addr, FILE *fp);
+                                     bool unknown_as_addr,
+                                     bool print_offsets, FILE *fp);
 size_t symbol__fprintf_symname_offs(const struct symbol *sym,
                                    const struct addr_location *al, FILE *fp);
 size_t __symbol__fprintf_symname(const struct symbol *sym,
diff --git a/tools/perf/util/symbol_fprintf.c b/tools/perf/util/symbol_fprintf.c
index a680bdaa65dc..7c6b33e8e2d2 100644
--- a/tools/perf/util/symbol_fprintf.c
+++ b/tools/perf/util/symbol_fprintf.c
@@ -15,14 +15,15 @@ size_t symbol__fprintf(struct symbol *sym, FILE *fp)
 
 size_t __symbol__fprintf_symname_offs(const struct symbol *sym,
                                      const struct addr_location *al,
-                                     bool unknown_as_addr, FILE *fp)
+                                     bool unknown_as_addr,
+                                     bool print_offsets, FILE *fp)
 {
        unsigned long offset;
        size_t length;
 
        if (sym && sym->name) {
                length = fprintf(fp, "%s", sym->name);
-               if (al) {
+               if (al && print_offsets) {
                        if (al->addr < sym->end)
                                offset = al->addr - sym->start;
                        else
@@ -40,19 +41,19 @@ size_t symbol__fprintf_symname_offs(const struct symbol 
*sym,
                                    const struct addr_location *al,
                                    FILE *fp)
 {
-       return __symbol__fprintf_symname_offs(sym, al, false, fp);
+       return __symbol__fprintf_symname_offs(sym, al, false, true, fp);
 }
 
 size_t __symbol__fprintf_symname(const struct symbol *sym,
                                 const struct addr_location *al,
                                 bool unknown_as_addr, FILE *fp)
 {
-       return __symbol__fprintf_symname_offs(sym, al, unknown_as_addr, fp);
+       return __symbol__fprintf_symname_offs(sym, al, unknown_as_addr, false, 
fp);
 }
 
 size_t symbol__fprintf_symname(const struct symbol *sym, FILE *fp)
 {
-       return __symbol__fprintf_symname_offs(sym, NULL, false, fp);
+       return __symbol__fprintf_symname_offs(sym, NULL, false, false, fp);
 }
 
 size_t dso__fprintf_symbols_by_name(struct dso *dso,
-- 
2.10.0

Reply via email to