Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966622AbdCXTYa (ORCPT ); Fri, 24 Mar 2017 15:24:30 -0400 Received: from mail.kernel.org ([198.145.29.136]:41952 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751306AbdCXTYW (ORCPT ); Fri, 24 Mar 2017 15:24:22 -0400 Date: Fri, 24 Mar 2017 16:24:14 -0300 From: Arnaldo Carvalho de Melo To: Milian Wolff Cc: Jin Yao , jolsa@kernel.org, Linux-kernel@vger.kernel.org, ak@linux.intel.com, kan.liang@intel.com, yao.jin@intel.com Subject: Re: [PATCH v5 0/5] perf report: Show inline stack Message-ID: <20170324192414.GH5148@kernel.org> References: <1489700547-7260-1-git-send-email-yao.jin@linux.intel.com> <1532086.vKWRnURGfG@agathebauer> <20170324190119.GE5148@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20170324190119.GE5148@kernel.org> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.8.0 (2017-02-23) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 20574 Lines: 440 Em Fri, Mar 24, 2017 at 04:01:19PM -0300, Arnaldo Carvalho de Melo escreveu: > Em Sat, Mar 18, 2017 at 05:41:09PM +0100, Milian Wolff escreveu: > > On Donnerstag, 16. M?rz 2017 22:42:22 CET Jin Yao wrote: > > > v5: Update according to Milian Wolff's comments. It groups by address > > > (then display file/ line), or by function (then display function name). > > > > Thank you Jin, that is really good. I tested it and it works really well for > > me. > > > > Arnaldo, could you please consider merging this? It's an extremely useful > > feature and direly missing from perf so far. > > Thanks, applied. But it fails testing in some cases, see below, will try to fix later, if nobody beats me to it, what I have is in acme/perf/core, git.kernel.org make -C tools/perf build-test make_minimal_O: cd . && make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 FEATURES_DUMP=/home/acme/git/linux/tools/perf/BUILD_TEST_FEATURE_DUMP -j4 O=/tmp/tmp.dQoIXBCebw DESTDIR=/tmp/tmp.zgrFKdJikV cd . && make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 FEATURES_DUMP=/home/acme/git/linux/tools/perf/BUILD_TEST_FEATURE_DUMP -j4 O=/tmp/tmp.dQoIXBCebw DESTDIR=/tmp/tmp.zgrFKdJikV BUILD: Doing 'make -j4' parallel build HOSTCC /tmp/tmp.dQoIXBCebw/fixdep.o HOSTLD /tmp/tmp.dQoIXBCebw/fixdep-in.o LINK /tmp/tmp.dQoIXBCebw/fixdep Makefile.config:458: Disabling post unwind, no support found. Makefile.config:594: Python support disabled by user GEN /tmp/tmp.dQoIXBCebw/common-cmds.h Warning: x86_64's syscall_64.tbl differs from kernel MKDIR /tmp/tmp.dQoIXBCebw/fd/ CC /tmp/tmp.dQoIXBCebw/fd/array.o CC /tmp/tmp.dQoIXBCebw/event-parse.o MKDIR /tmp/tmp.dQoIXBCebw/fs/ CC /tmp/tmp.dQoIXBCebw/fs/fs.o LD /tmp/tmp.dQoIXBCebw/fd/libapi-in.o CC /tmp/tmp.dQoIXBCebw/cpu.o CC /tmp/tmp.dQoIXBCebw/debug.o PERF_VERSION = 4.11.rc2.g8bc82f CC /tmp/tmp.dQoIXBCebw/exec-cmd.o CC /tmp/tmp.dQoIXBCebw/str_error_r.o MKDIR /tmp/tmp.dQoIXBCebw/pmu-events/ MKDIR /tmp/tmp.dQoIXBCebw/fs/ HOSTCC /tmp/tmp.dQoIXBCebw/pmu-events/json.o CC /tmp/tmp.dQoIXBCebw/fs/tracing_path.o MKDIR /tmp/tmp.dQoIXBCebw/pmu-events/ HOSTCC /tmp/tmp.dQoIXBCebw/pmu-events/jsmn.o CC /tmp/tmp.dQoIXBCebw/help.o LD /tmp/tmp.dQoIXBCebw/fs/libapi-in.o HOSTCC /tmp/tmp.dQoIXBCebw/pmu-events/jevents.o LD /tmp/tmp.dQoIXBCebw/libapi-in.o AR /tmp/tmp.dQoIXBCebw/libapi.a CC /tmp/tmp.dQoIXBCebw/plugin_jbd2.o CC /tmp/tmp.dQoIXBCebw/event-plugin.o LD /tmp/tmp.dQoIXBCebw/plugin_jbd2-in.o CC /tmp/tmp.dQoIXBCebw/plugin_hrtimer.o HOSTLD /tmp/tmp.dQoIXBCebw/pmu-events/jevents-in.o CC /tmp/tmp.dQoIXBCebw/perf-read-vdso32 LD /tmp/tmp.dQoIXBCebw/plugin_hrtimer-in.o GEN perf-archive CC /tmp/tmp.dQoIXBCebw/plugin_kmem.o GEN perf-with-kcore CC /tmp/tmp.dQoIXBCebw/trace-seq.o MKDIR /tmp/tmp.dQoIXBCebw/util/ CC /tmp/tmp.dQoIXBCebw/util/alias.o CC /tmp/tmp.dQoIXBCebw/pager.o LD /tmp/tmp.dQoIXBCebw/plugin_kmem-in.o CC /tmp/tmp.dQoIXBCebw/plugin_kvm.o CC /tmp/tmp.dQoIXBCebw/parse-filter.o LD /tmp/tmp.dQoIXBCebw/plugin_kvm-in.o CC /tmp/tmp.dQoIXBCebw/parse-options.o CC /tmp/tmp.dQoIXBCebw/plugin_mac80211.o MKDIR /tmp/tmp.dQoIXBCebw/util/ CC /tmp/tmp.dQoIXBCebw/util/annotate.o LD /tmp/tmp.dQoIXBCebw/plugin_mac80211-in.o CC /tmp/tmp.dQoIXBCebw/plugin_sched_switch.o CC /tmp/tmp.dQoIXBCebw/parse-utils.o LD /tmp/tmp.dQoIXBCebw/plugin_sched_switch-in.o CC /tmp/tmp.dQoIXBCebw/plugin_function.o CC /tmp/tmp.dQoIXBCebw/kbuffer-parse.o LD /tmp/tmp.dQoIXBCebw/plugin_function-in.o CC /tmp/tmp.dQoIXBCebw/plugin_xen.o LD /tmp/tmp.dQoIXBCebw/libtraceevent-in.o LD /tmp/tmp.dQoIXBCebw/plugin_xen-in.o LINK /tmp/tmp.dQoIXBCebw/libtraceevent.a CC /tmp/tmp.dQoIXBCebw/plugin_scsi.o CC /tmp/tmp.dQoIXBCebw/builtin-bench.o LD /tmp/tmp.dQoIXBCebw/plugin_scsi-in.o CC /tmp/tmp.dQoIXBCebw/plugin_cfg80211.o LD /tmp/tmp.dQoIXBCebw/plugin_cfg80211-in.o LINK /tmp/tmp.dQoIXBCebw/plugin_jbd2.so LINK /tmp/tmp.dQoIXBCebw/plugin_hrtimer.so LINK /tmp/tmp.dQoIXBCebw/plugin_kmem.so LINK /tmp/tmp.dQoIXBCebw/plugin_kvm.so LINK /tmp/tmp.dQoIXBCebw/plugin_mac80211.so CC /tmp/tmp.dQoIXBCebw/run-command.o LINK /tmp/tmp.dQoIXBCebw/plugin_sched_switch.so LINK /tmp/tmp.dQoIXBCebw/plugin_function.so CC /tmp/tmp.dQoIXBCebw/builtin-annotate.o LINK /tmp/tmp.dQoIXBCebw/plugin_xen.so LINK /tmp/tmp.dQoIXBCebw/plugin_scsi.so LINK /tmp/tmp.dQoIXBCebw/plugin_cfg80211.so LINK /tmp/tmp.dQoIXBCebw/pmu-events/jevents CC /tmp/tmp.dQoIXBCebw/sigchain.o GEN /tmp/tmp.dQoIXBCebw/libtraceevent-dynamic-list GEN /tmp/tmp.dQoIXBCebw/pmu-events/pmu-events.c CC /tmp/tmp.dQoIXBCebw/subcmd-config.o LD /tmp/tmp.dQoIXBCebw/libsubcmd-in.o CC /tmp/tmp.dQoIXBCebw/pmu-events/pmu-events.o AR /tmp/tmp.dQoIXBCebw/libsubcmd.a CC /tmp/tmp.dQoIXBCebw/util/block-range.o CC /tmp/tmp.dQoIXBCebw/builtin-config.o CC /tmp/tmp.dQoIXBCebw/util/build-id.o CC /tmp/tmp.dQoIXBCebw/util/config.o CC /tmp/tmp.dQoIXBCebw/builtin-diff.o LD /tmp/tmp.dQoIXBCebw/pmu-events/pmu-events-in.o CC /tmp/tmp.dQoIXBCebw/builtin-evlist.o CC /tmp/tmp.dQoIXBCebw/builtin-ftrace.o CC /tmp/tmp.dQoIXBCebw/util/ctype.o CC /tmp/tmp.dQoIXBCebw/util/db-export.o CC /tmp/tmp.dQoIXBCebw/util/env.o CC /tmp/tmp.dQoIXBCebw/builtin-help.o CC /tmp/tmp.dQoIXBCebw/builtin-sched.o CC /tmp/tmp.dQoIXBCebw/util/event.o CC /tmp/tmp.dQoIXBCebw/util/evlist.o CC /tmp/tmp.dQoIXBCebw/builtin-buildid-list.o CC /tmp/tmp.dQoIXBCebw/builtin-buildid-cache.o CC /tmp/tmp.dQoIXBCebw/builtin-kallsyms.o CC /tmp/tmp.dQoIXBCebw/util/evsel.o CC /tmp/tmp.dQoIXBCebw/builtin-list.o CC /tmp/tmp.dQoIXBCebw/util/evsel_fprintf.o CC /tmp/tmp.dQoIXBCebw/arch/common.o CC /tmp/tmp.dQoIXBCebw/builtin-record.o CC /tmp/tmp.dQoIXBCebw/util/find_bit.o CC /tmp/tmp.dQoIXBCebw/util/kallsyms.o MKDIR /tmp/tmp.dQoIXBCebw/arch/x86/util/ CC /tmp/tmp.dQoIXBCebw/arch/x86/util/header.o CC /tmp/tmp.dQoIXBCebw/util/levenshtein.o MKDIR /tmp/tmp.dQoIXBCebw/arch/x86/util/ CC /tmp/tmp.dQoIXBCebw/arch/x86/util/tsc.o CC /tmp/tmp.dQoIXBCebw/util/llvm-utils.o CC /tmp/tmp.dQoIXBCebw/arch/x86/util/pmu.o CC /tmp/tmp.dQoIXBCebw/builtin-report.o CC /tmp/tmp.dQoIXBCebw/arch/x86/util/kvm-stat.o BISON /tmp/tmp.dQoIXBCebw/util/parse-events-bison.c CC /tmp/tmp.dQoIXBCebw/util/perf_regs.o CC /tmp/tmp.dQoIXBCebw/util/path.o CC /tmp/tmp.dQoIXBCebw/util/rbtree.o CC /tmp/tmp.dQoIXBCebw/util/libstring.o CC /tmp/tmp.dQoIXBCebw/arch/x86/util/perf_regs.o CC /tmp/tmp.dQoIXBCebw/util/bitmap.o CC /tmp/tmp.dQoIXBCebw/util/hweight.o CC /tmp/tmp.dQoIXBCebw/arch/x86/util/group.o CC /tmp/tmp.dQoIXBCebw/util/quote.o CC /tmp/tmp.dQoIXBCebw/builtin-stat.o LD /tmp/tmp.dQoIXBCebw/arch/x86/util/libperf-in.o MKDIR /tmp/tmp.dQoIXBCebw/ui/ CC /tmp/tmp.dQoIXBCebw/ui/setup.o MKDIR /tmp/tmp.dQoIXBCebw/arch/x86/tests/ CC /tmp/tmp.dQoIXBCebw/arch/x86/tests/arch-tests.o MKDIR /tmp/tmp.dQoIXBCebw/arch/x86/tests/ CC /tmp/tmp.dQoIXBCebw/arch/x86/tests/rdpmc.o CC /tmp/tmp.dQoIXBCebw/util/strbuf.o MKDIR /tmp/tmp.dQoIXBCebw/ui/ CC /tmp/tmp.dQoIXBCebw/ui/helpline.o CC /tmp/tmp.dQoIXBCebw/arch/x86/tests/perf-time-to-tsc.o CC /tmp/tmp.dQoIXBCebw/util/string.o CC /tmp/tmp.dQoIXBCebw/ui/progress.o CC /tmp/tmp.dQoIXBCebw/ui/util.o CC /tmp/tmp.dQoIXBCebw/arch/x86/tests/intel-cqm.o CC /tmp/tmp.dQoIXBCebw/ui/hist.o CC /tmp/tmp.dQoIXBCebw/util/strlist.o LD /tmp/tmp.dQoIXBCebw/arch/x86/tests/libperf-in.o LD /tmp/tmp.dQoIXBCebw/arch/x86/libperf-in.o LD /tmp/tmp.dQoIXBCebw/arch/libperf-in.o MKDIR /tmp/tmp.dQoIXBCebw/scripts/ LD /tmp/tmp.dQoIXBCebw/scripts/libperf-in.o CC /tmp/tmp.dQoIXBCebw/builtin-timechart.o CC /tmp/tmp.dQoIXBCebw/util/strfilter.o CC /tmp/tmp.dQoIXBCebw/builtin-top.o CC /tmp/tmp.dQoIXBCebw/util/top.o CC /tmp/tmp.dQoIXBCebw/util/usage.o CC /tmp/tmp.dQoIXBCebw/util/dso.o MKDIR /tmp/tmp.dQoIXBCebw/ui/stdio/ CC /tmp/tmp.dQoIXBCebw/ui/stdio/hist.o CC /tmp/tmp.dQoIXBCebw/builtin-script.o CC /tmp/tmp.dQoIXBCebw/builtin-kmem.o LD /tmp/tmp.dQoIXBCebw/ui/libperf-in.o CC /tmp/tmp.dQoIXBCebw/util/symbol.o CC /tmp/tmp.dQoIXBCebw/builtin-lock.o CC /tmp/tmp.dQoIXBCebw/util/symbol_fprintf.o CC /tmp/tmp.dQoIXBCebw/util/color.o CC /tmp/tmp.dQoIXBCebw/builtin-kvm.o CC /tmp/tmp.dQoIXBCebw/util/header.o CC /tmp/tmp.dQoIXBCebw/util/callchain.o CC /tmp/tmp.dQoIXBCebw/util/values.o CC /tmp/tmp.dQoIXBCebw/util/debug.o CC /tmp/tmp.dQoIXBCebw/builtin-inject.o CC /tmp/tmp.dQoIXBCebw/util/machine.o CC /tmp/tmp.dQoIXBCebw/builtin-mem.o CC /tmp/tmp.dQoIXBCebw/util/map.o CC /tmp/tmp.dQoIXBCebw/builtin-data.o CC /tmp/tmp.dQoIXBCebw/util/pstack.o CC /tmp/tmp.dQoIXBCebw/builtin-version.o CC /tmp/tmp.dQoIXBCebw/util/session.o CC /tmp/tmp.dQoIXBCebw/builtin-c2c.o CC /tmp/tmp.dQoIXBCebw/util/ordered-events.o CC /tmp/tmp.dQoIXBCebw/util/namespaces.o MKDIR /tmp/tmp.dQoIXBCebw/bench/ CC /tmp/tmp.dQoIXBCebw/bench/sched-messaging.o CC /tmp/tmp.dQoIXBCebw/util/comm.o MKDIR /tmp/tmp.dQoIXBCebw/bench/ CC /tmp/tmp.dQoIXBCebw/bench/sched-pipe.o CC /tmp/tmp.dQoIXBCebw/util/thread.o CC /tmp/tmp.dQoIXBCebw/bench/mem-functions.o CC /tmp/tmp.dQoIXBCebw/util/thread_map.o CC /tmp/tmp.dQoIXBCebw/util/trace-event-parse.o MKDIR /tmp/tmp.dQoIXBCebw/tests/ CC /tmp/tmp.dQoIXBCebw/tests/builtin-test.o CC /tmp/tmp.dQoIXBCebw/bench/futex-hash.o CC /tmp/tmp.dQoIXBCebw/util/parse-events-bison.o CC /tmp/tmp.dQoIXBCebw/bench/futex-wake.o BISON /tmp/tmp.dQoIXBCebw/util/pmu-bison.c CC /tmp/tmp.dQoIXBCebw/util/trace-event-read.o MKDIR /tmp/tmp.dQoIXBCebw/tests/ CC /tmp/tmp.dQoIXBCebw/tests/parse-events.o CC /tmp/tmp.dQoIXBCebw/bench/futex-wake-parallel.o CC /tmp/tmp.dQoIXBCebw/util/trace-event-info.o CC /tmp/tmp.dQoIXBCebw/bench/futex-requeue.o CC /tmp/tmp.dQoIXBCebw/util/trace-event-scripting.o CC /tmp/tmp.dQoIXBCebw/bench/futex-lock-pi.o CC /tmp/tmp.dQoIXBCebw/util/trace-event.o CC /tmp/tmp.dQoIXBCebw/bench/mem-memcpy-x86-64-asm.o CC /tmp/tmp.dQoIXBCebw/bench/mem-memset-x86-64-asm.o CC /tmp/tmp.dQoIXBCebw/util/svghelper.o LD /tmp/tmp.dQoIXBCebw/bench/perf-in.o CC /tmp/tmp.dQoIXBCebw/perf.o CC /tmp/tmp.dQoIXBCebw/util/sort.o CC /tmp/tmp.dQoIXBCebw/tests/dso-data.o CC /tmp/tmp.dQoIXBCebw/tests/attr.o CC /tmp/tmp.dQoIXBCebw/util/hist.o CC /tmp/tmp.dQoIXBCebw/tests/vmlinux-kallsyms.o CC /tmp/tmp.dQoIXBCebw/tests/openat-syscall.o CC /tmp/tmp.dQoIXBCebw/tests/openat-syscall-all-cpus.o CC /tmp/tmp.dQoIXBCebw/tests/openat-syscall-tp-fields.o CC /tmp/tmp.dQoIXBCebw/tests/mmap-basic.o CC /tmp/tmp.dQoIXBCebw/tests/perf-record.o CC /tmp/tmp.dQoIXBCebw/util/util.o CC /tmp/tmp.dQoIXBCebw/tests/evsel-roundtrip-name.o CC /tmp/tmp.dQoIXBCebw/tests/evsel-tp-sched.o CC /tmp/tmp.dQoIXBCebw/tests/fdarray.o CC /tmp/tmp.dQoIXBCebw/util/xyarray.o CC /tmp/tmp.dQoIXBCebw/tests/pmu.o CC /tmp/tmp.dQoIXBCebw/util/cpumap.o CC /tmp/tmp.dQoIXBCebw/tests/hists_common.o CC /tmp/tmp.dQoIXBCebw/util/cgroup.o CC /tmp/tmp.dQoIXBCebw/tests/hists_link.o CC /tmp/tmp.dQoIXBCebw/tests/hists_filter.o CC /tmp/tmp.dQoIXBCebw/util/target.o CC /tmp/tmp.dQoIXBCebw/tests/hists_output.o CC /tmp/tmp.dQoIXBCebw/util/rblist.o CC /tmp/tmp.dQoIXBCebw/util/intlist.o CC /tmp/tmp.dQoIXBCebw/tests/hists_cumulate.o CC /tmp/tmp.dQoIXBCebw/util/vdso.o CC /tmp/tmp.dQoIXBCebw/util/counts.o CC /tmp/tmp.dQoIXBCebw/util/stat.o CC /tmp/tmp.dQoIXBCebw/util/stat-shadow.o CC /tmp/tmp.dQoIXBCebw/tests/python-use.o CC /tmp/tmp.dQoIXBCebw/tests/bp_signal.o CC /tmp/tmp.dQoIXBCebw/tests/bp_signal_overflow.o CC /tmp/tmp.dQoIXBCebw/util/record.o CC /tmp/tmp.dQoIXBCebw/tests/task-exit.o CC /tmp/tmp.dQoIXBCebw/tests/sw-clock.o CC /tmp/tmp.dQoIXBCebw/util/srcline.o CC /tmp/tmp.dQoIXBCebw/tests/mmap-thread-lookup.o CC /tmp/tmp.dQoIXBCebw/util/data.o CC /tmp/tmp.dQoIXBCebw/tests/thread-mg-share.o CC /tmp/tmp.dQoIXBCebw/util/tsc.o CC /tmp/tmp.dQoIXBCebw/tests/switch-tracking.o CC /tmp/tmp.dQoIXBCebw/util/cloexec.o CC /tmp/tmp.dQoIXBCebw/tests/keep-tracking.o CC /tmp/tmp.dQoIXBCebw/util/call-path.o CC /tmp/tmp.dQoIXBCebw/util/thread-stack.o CC /tmp/tmp.dQoIXBCebw/util/parse-branch-options.o CC /tmp/tmp.dQoIXBCebw/tests/code-reading.o CC /tmp/tmp.dQoIXBCebw/tests/sample-parsing.o CC /tmp/tmp.dQoIXBCebw/util/dump-insn.o CC /tmp/tmp.dQoIXBCebw/util/parse-regs-options.o CC /tmp/tmp.dQoIXBCebw/util/term.o CC /tmp/tmp.dQoIXBCebw/tests/parse-no-sample-id-all.o CC /tmp/tmp.dQoIXBCebw/util/help-unknown-cmd.o CC /tmp/tmp.dQoIXBCebw/tests/kmod-path.o CC /tmp/tmp.dQoIXBCebw/util/mem-events.o CC /tmp/tmp.dQoIXBCebw/tests/thread-map.o CC /tmp/tmp.dQoIXBCebw/util/vsprintf.o CC /tmp/tmp.dQoIXBCebw/util/drv_configs.o CC /tmp/tmp.dQoIXBCebw/tests/llvm.o CC /tmp/tmp.dQoIXBCebw/util/time-utils.o CC /tmp/tmp.dQoIXBCebw/tests/bpf.o CC /tmp/tmp.dQoIXBCebw/tests/topology.o BISON /tmp/tmp.dQoIXBCebw/util/expr-bison.c CC /tmp/tmp.dQoIXBCebw/util/symbol-minimal.o MKDIR /tmp/tmp.dQoIXBCebw/util/scripting-engines/ LD /tmp/tmp.dQoIXBCebw/util/scripting-engines/libperf-in.o CC /tmp/tmp.dQoIXBCebw/util/zlib.o CC /tmp/tmp.dQoIXBCebw/tests/cpumap.o CC /tmp/tmp.dQoIXBCebw/util/lzma.o CC /tmp/tmp.dQoIXBCebw/tests/stat.o CC /tmp/tmp.dQoIXBCebw/tests/event_update.o CC /tmp/tmp.dQoIXBCebw/util/demangle-java.o CC /tmp/tmp.dQoIXBCebw/tests/event-times.o CC /tmp/tmp.dQoIXBCebw/util/demangle-rust.o CC /tmp/tmp.dQoIXBCebw/tests/expr.o CC /tmp/tmp.dQoIXBCebw/util/perf-hooks.o CC /tmp/tmp.dQoIXBCebw/tests/backward-ring-buffer.o CC /tmp/tmp.dQoIXBCebw/tests/sdt.o CC /tmp/tmp.dQoIXBCebw/tests/is_printable_array.o FLEX /tmp/tmp.dQoIXBCebw/util/parse-events-flex.c FLEX /tmp/tmp.dQoIXBCebw/util/pmu-flex.c CC /tmp/tmp.dQoIXBCebw/util/pmu-bison.o CC /tmp/tmp.dQoIXBCebw/tests/bitmap.o CC /tmp/tmp.dQoIXBCebw/tests/perf-hooks.o CC /tmp/tmp.dQoIXBCebw/tests/clang.o CC /tmp/tmp.dQoIXBCebw/util/expr-bison.o CC /tmp/tmp.dQoIXBCebw/tests/unit_number__scnprintf.o CC /tmp/tmp.dQoIXBCebw/tests/llvm-src-base.o CC /tmp/tmp.dQoIXBCebw/tests/llvm-src-kbuild.o CC /tmp/tmp.dQoIXBCebw/tests/llvm-src-prologue.o CC /tmp/tmp.dQoIXBCebw/tests/llvm-src-relocation.o LD /tmp/tmp.dQoIXBCebw/tests/perf-in.o CC /tmp/tmp.dQoIXBCebw/util/parse-events.o CC /tmp/tmp.dQoIXBCebw/util/pmu.o CC /tmp/tmp.dQoIXBCebw/util/parse-events-flex.o LD /tmp/tmp.dQoIXBCebw/perf-in.o CC /tmp/tmp.dQoIXBCebw/util/pmu-flex.o LD /tmp/tmp.dQoIXBCebw/util/libperf-in.o LD /tmp/tmp.dQoIXBCebw/libperf-in.o AR /tmp/tmp.dQoIXBCebw/libperf.a LINK /tmp/tmp.dQoIXBCebw/perf /tmp/tmp.dQoIXBCebw/libperf.a(libperf-in.o): In function `inline_list__append': /home/acme/git/linux/tools/perf/util/srcline.c:47: undefined reference to `dso__demangle_sym' collect2: error: ld returned 1 exit status Makefile.perf:420: recipe for target '/tmp/tmp.dQoIXBCebw/perf' failed make[4]: *** [/tmp/tmp.dQoIXBCebw/perf] Error 1 Makefile.perf:204: recipe for target 'sub-make' failed make[3]: *** [sub-make] Error 2 Makefile:68: recipe for target 'all' failed make[2]: *** [all] Error 2 tests/make:296: recipe for target 'make_minimal_O' failed make[1]: *** [make_minimal_O] Error 1 Makefile:102: recipe for target 'build-test' failed make: *** [build-test] Error 2 make: Leaving directory '/home/acme/git/linux/tools/perf' [acme@jouet linux]$ > > That said, Jin, here are some observations that could be improved in the > > future (I don't think any of these should hold back merging this feature now): > > > > For the following example code build with "-O2 -g" and recorded with "--call- > > graph dwarf" I observe some output combinations that could potentially be > > improved in the future: > > > > ~~~~~~~~~~~~~~~~~~~~ > > #include > > #include > > #include > > #include > > > > using namespace std; > > > > int main() > > { > > uniform_real_distribution uniform(-1E5, 1E5); > > default_random_engine engine; > > double s = 0; > > for (int i = 0; i < 10000000; ++i) { > > s += norm(complex(uniform(engine), uniform(engine))); > > } > > cout << s << '\n'; > > return 0; > > } > > ~~~~~~~~~~~~~~~~ > > > > #1 duplicated entries when grouping by function: > > > > ~~~~~~~~~~~~~~~~ > > perf report --inline --stdio > > ... > > --35.34%--_start > > __libc_start_main > > main > > main (inline) > > std::uniform_real_distribution::operator() > long, 16807ul, 0ul, 2147483647ul> > (inline) > > std::uniform_real_distribution::operator() > long, 16807ul, 0ul, 2147483647ul> > (inline) > > std::__detail::_Adaptor > long, 16807ul, 0ul, 2147483647ul>, double>::operator() (inline) > > ~~~~~~~~~~~~~~~~ > > > > Here, we see main twice, once for the "real" frame, and once for an inlined > > one? Then we see the same function twice as inlined frame, which is also odd. > > > > ~~~~~~~~~~~~~~~~ > > perf report --inline --stdio --no-children > > ... > > 59.81% cpp-inlining libm-2.25.so [.] __hypot_finite > > | > > ---__hypot_finite > > hypot > > main > > std::norm (inline) > > main (inline) > > __libc_start_main > > _start > > ~~~~~~~~~~~~~~~~ > > > > Here we see a confusing output. The first "main" frame below "hypot" is > > actually code form cpp's complex header which got inlined into main. That > > associates the wrong function name to this frame, i.e. "main" instead of > > std::norm". When the inline stack is shown below we actually see what happens, > > i.e. we eventually end up in main again, but of course this output is not the > > best as-is. > > > > But, again: I think these are minor issues, and the feature itself is already > > extremely useful and I hope to see it finally merged. > > > > Thanks again Jin for your good work! > > > > Cheers > > > > -- > > Milian Wolff | milian.wolff@kdab.com | Software Engineer > > KDAB (Deutschland) GmbH&Co KG, a KDAB Group company > > Tel: +49-30-521325470 > > KDAB - The Qt Experts > >