[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <cc1a48d0-b388-8a96-294d-2725d0e2e114@linux.intel.com>
Date: Sat, 25 Mar 2017 08:20:17 +0800
From: "Jin, Yao" <yao.jin@...ux.intel.com>
To: Arnaldo Carvalho de Melo <acme@...nel.org>,
Milian Wolff <milian.wolff@...b.com>
Cc: jolsa@...nel.org, Linux-kernel@...r.kernel.org, ak@...ux.intel.com,
kan.liang@...el.com, yao.jin@...el.com
Subject: Re: [PATCH v5 0/5] perf report: Show inline stack
Hi Arnaldo,
I checked it needed to add dso__dmangle_sym() in symbol-minimal.c.
make -C tools/perf build-test
..........
iqhvUMsN DESTDIR=/tmp/tmp.9zqX9FtV0p
Makefile:203: Please install asciidoc xmlto to have the man pages installed
make_no_slang_O: cd . && make NO_SLANG=1
FEATURES_DUMP=/home/jinyao/skl-ws/perf-dev/tmp/acme/tools/perf/BUILD_TEST_FEATURE_DUMP
-j8 O=/tmp/tmp.eDBcxsrMuA DESTDIR=/tmp/tmp.0wwJYGzYTr
OK
I will send a patch "perf report: Fix build-test error for
make_minimal_O target" to fix that.
Thanks so much for your help!
Thanks
Jin Yao
On 3/25/2017 3:24 AM, Arnaldo Carvalho de Melo wrote:
> 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
>
> <SNIP>
> 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@...et 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 <complex>
>>> #include <cmath>
>>> #include <random>
>>> #include <iostream>
>>>
>>> using namespace std;
>>>
>>> int main()
>>> {
>>> uniform_real_distribution<double> uniform(-1E5, 1E5);
>>> default_random_engine engine;
>>> double s = 0;
>>> for (int i = 0; i < 10000000; ++i) {
>>> s += norm(complex<double>(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<double>::operator()<std::linear_congruential_engine<unsigned
>>> long, 16807ul, 0ul, 2147483647ul> > (inline)
>>> std::uniform_real_distribution<double>::operator()<std::linear_congruential_engine<unsigned
>>> long, 16807ul, 0ul, 2147483647ul> > (inline)
>>> std::__detail::_Adaptor<std::linear_congruential_engine<unsigned
>>> 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<double> (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@...b.com | Software Engineer
>>> KDAB (Deutschland) GmbH&Co KG, a KDAB Group company
>>> Tel: +49-30-521325470
>>> KDAB - The Qt Experts
>>
Powered by blists - more mailing lists