lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 24 Mar 2017 16:24:14 -0300
From:   Arnaldo Carvalho de Melo <acme@...nel.org>
To:     Milian Wolff <milian.wolff@...b.com>
Cc:     Jin Yao <yao.jin@...ux.intel.com>, 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

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

Powered by Openwall GNU/*/Linux Powered by OpenVZ