perf record: Store data mmaps for dwarf unwind
authorJiri Olsa <jolsa@redhat.com>
Thu, 7 Jan 2016 13:30:22 +0000 (14:30 +0100)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 8 Jan 2016 17:17:45 +0000 (14:17 -0300)
Currently we don't synthesize data mmap by default. It depends on -d
option, that enables data address sampling.

But we've seen cases (softice) where DWARF unwinder went through non
executable mmaps, which we need to lookup in MAP__VARIABLE tree.

Making data mmaps to be synthesized for dwarf unwind as well.

Reported-by: Noel Grandin <noelgrandin@gmail.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20160107133022.GA32115@krava.brq.redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-record.c

index 9c5cdc2c44714a937cb04e09a523373773b3a4e8..dc4e0adf5c5b5c60cf96cb22120918c575f2b113 100644 (file)
@@ -815,8 +815,12 @@ int record_parse_callchain_opt(const struct option *opt,
        }
 
        ret = parse_callchain_record_opt(arg, &callchain_param);
-       if (!ret)
+       if (!ret) {
+               /* Enable data address sampling for DWARF unwind. */
+               if (callchain_param.record_mode == CALLCHAIN_DWARF)
+                       record->sample_address = true;
                callchain_debug();
+       }
 
        return ret;
 }