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:   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