Re: [GIT PULL 00/28] perf/core fixes and cleanups

From: Ingo Molnar
Date: Thu Apr 20 2017 - 04:11:20 EST



* Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:

> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit e720c19e0d5412f45736d62258d21dc7b056c4ad:
>
> Merge tag 'perf-core-for-mingo-4.12-20170413' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-04-17 10:11:09 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.12-20170419
>
> for you to fetch changes up to 1b5ad16c7aa7177512ce141e345ff36b9f1a6136:
>
> perf tools: Ditch unused strchrnul() reimplementation (2017-04-19 13:01:57 -0300)
>
> ----------------------------------------------------------------
> perf/core cleanups: (Arnaldo Carvalho de Melo)
>
> . Introduce new header files out of the hodge-podge that util/util.h
> became, trying to disentangle the includes hell that all C projects
> end up growing. This should help in build times, as changes to
> seemingly unrelated files (util.h included tons of headers) won't
> trigger a rebuild of most object files.
>
> . Use equivalent facilities found in the kernel source code base
> originated tools/include/ header files, such as __stringify(),
> ARRAY_SIZE, that has extra checks (__must_be_array()), etc.
>
> . For that get some more files from the kernel sources, like
> include/linux/bug.h, some just with the bits needed at this time.
>
> . Use the headers where facilities declared in them are used, such
> as PRIxu(32,64) macros (inttypes.h), errno defines (errno.h), etc.
>
> . Remove various leftovers from the initial code base we copied from
> git.git: FLEX_ARRAY, etc.
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (28):
> perf unwind arm64: Add missing errno.h header
> perf tools: Remove FLEX_ARRAY definition
> tools include: Introduce linux/bug.h, from the kernel sources
> tools include: Adopt __same_type() and __must_be_array() from the kernel
> tools include: Move ARRAY_SIZE() to linux/kernel.h
> perf tools: Add include <linux/kernel.h> where ARRAY_SIZE() is used
> objtool: Drop ARRAY_SIZE() definition, tools/include/linux/kernel.h has it now
> tools include: Drop ARRAY_SIZE() definition from linux/hashtable.h
> perf tools: Remove unused macros from util.h
> perf tools: Including missing inttypes.h header
> perf tools: Remove PRI[xu] macros from perf.h
> perf tools: Replace STR() calls with __stringify()
> perf tools: Ditch unused PATH_SEP, STRIP_EXTENSION
> perf tools: Move sane ctype stuff from util.h to sane_ctype.h
> tools include: Include missing headers for fls() and types in linux/log2.h
> perf tools: Move print_binary definitions to separate files
> perf tools: Move srcline definitions to separate header
> perf tools: Move extra string util functions to util/string2.h
> perf tools: Include errno.h where needed
> perf str{filter,list}: Disentangle headers
> perf tools: Don't include terminal handling headers in util.h
> perf tools: Move path related functions to util/path.h
> perf tools: No need to include bitops.h in util.h
> perf tools: Use api/fs/tracing_path.h where needed
> perf tools: Remove misplaced __maybe_unused in some functions
> perf tools: Remove include dirent.h from util.h
> perf tools: Remove regex.h and fnmatch.h from util.h
> perf tools: Ditch unused strchrnul() reimplementation
>
> tools/include/linux/bug.h | 10 +
> tools/include/linux/compiler-gcc.h | 3 +
> tools/include/linux/compiler.h | 5 +
> tools/include/linux/hashtable.h | 4 -
> tools/include/linux/kernel.h | 3 +
> tools/include/linux/log2.h | 3 +
> tools/lib/symbol/kallsyms.c | 1 +
> tools/objtool/builtin-check.c | 3 +-
> tools/objtool/objtool.c | 3 +-
> tools/perf/MANIFEST | 1 +
> tools/perf/arch/arm/util/dwarf-regs.c | 4 +-
> tools/perf/arch/arm64/util/dwarf-regs.c | 4 +-
> tools/perf/arch/arm64/util/unwind-libunwind.c | 2 +-
> tools/perf/arch/common.c | 2 +
> tools/perf/arch/powerpc/util/dwarf-regs.c | 5 +-
> tools/perf/arch/powerpc/util/kvm-stat.c | 1 +
> tools/perf/arch/powerpc/util/perf_regs.c | 1 +
> tools/perf/arch/s390/util/kvm-stat.c | 1 +
> tools/perf/arch/x86/tests/intel-cqm.c | 1 +
> tools/perf/arch/x86/tests/perf-time-to-tsc.c | 2 +
> tools/perf/arch/x86/util/auxtrace.c | 1 +
> tools/perf/arch/x86/util/intel-bts.c | 1 +
> tools/perf/arch/x86/util/intel-pt.c | 1 +
> tools/perf/arch/x86/util/kvm-stat.c | 1 +
> tools/perf/arch/x86/util/perf_regs.c | 1 +
> tools/perf/bench/mem-functions.c | 1 +
> tools/perf/bench/numa.c | 2 +
> tools/perf/builtin-annotate.c | 1 +
> tools/perf/builtin-buildid-cache.c | 1 +
> tools/perf/builtin-buildid-list.c | 1 +
> tools/perf/builtin-c2c.c | 2 +
> tools/perf/builtin-diff.c | 2 +
> tools/perf/builtin-ftrace.c | 2 +
> tools/perf/builtin-help.c | 6 +-
> tools/perf/builtin-inject.c | 1 +
> tools/perf/builtin-kallsyms.c | 1 +
> tools/perf/builtin-kmem.c | 5 +
> tools/perf/builtin-kvm.c | 4 +
> tools/perf/builtin-lock.c | 3 +
> tools/perf/builtin-mem.c | 1 +
> tools/perf/builtin-record.c | 2 +
> tools/perf/builtin-report.c | 4 +-
> tools/perf/builtin-sched.c | 5 +
> tools/perf/builtin-script.c | 8 +
> tools/perf/builtin-stat.c | 5 +
> tools/perf/builtin-timechart.c | 4 +-
> tools/perf/builtin-top.c | 3 +
> tools/perf/builtin-trace.c | 8 +
> tools/perf/perf.c | 12 +-
> tools/perf/tests/attr.c | 2 +
> tools/perf/tests/backward-ring-buffer.c | 1 +
> tools/perf/tests/bpf.c | 2 +
> tools/perf/tests/builtin-test.c | 2 +
> tools/perf/tests/clang.c | 1 +
> tools/perf/tests/code-reading.c | 6 +-
> tools/perf/tests/dso-data.c | 2 +
> tools/perf/tests/dwarf-unwind.c | 1 +
> tools/perf/tests/event-times.c | 2 +
> tools/perf/tests/evsel-roundtrip-name.c | 2 +
> tools/perf/tests/hists_common.c | 2 +
> tools/perf/tests/hists_cumulate.c | 1 +
> tools/perf/tests/hists_filter.c | 1 +
> tools/perf/tests/hists_link.c | 2 +
> tools/perf/tests/hists_output.c | 1 +
> tools/perf/tests/is_printable_array.c | 3 +-
> tools/perf/tests/mmap-basic.c | 3 +
> tools/perf/tests/mmap-thread-lookup.c | 2 +
> tools/perf/tests/openat-syscall-all-cpus.c | 6 +
> tools/perf/tests/openat-syscall-tp-fields.c | 1 +
> tools/perf/tests/openat-syscall.c | 5 +
> tools/perf/tests/parse-events.c | 5 +-
> tools/perf/tests/parse-no-sample-id-all.c | 1 +
> tools/perf/tests/perf-record.c | 2 +
> tools/perf/tests/pmu.c | 2 +
> tools/perf/tests/sample-parsing.c | 2 +
> tools/perf/tests/sdt.c | 1 +
> tools/perf/tests/sw-clock.c | 2 +
> tools/perf/tests/switch-tracking.c | 1 +
> tools/perf/tests/task-exit.c | 1 +
> tools/perf/tests/unit_number__scnprintf.c | 1 +
> tools/perf/tests/vmlinux-kallsyms.c | 1 +
> tools/perf/ui/browser.c | 2 +
> tools/perf/ui/browsers/annotate.c | 3 +
> tools/perf/ui/browsers/header.c | 2 +
> tools/perf/ui/browsers/hists.c | 8 +
> tools/perf/ui/browsers/map.c | 2 +
> tools/perf/ui/gtk/annotate.c | 2 +-
> tools/perf/ui/gtk/hists.c | 1 +
> tools/perf/ui/hist.c | 1 +
> tools/perf/ui/setup.c | 1 +
> tools/perf/ui/stdio/hist.c | 4 +-
> tools/perf/ui/tui/setup.c | 1 +
> tools/perf/util/Build | 1 +
> tools/perf/util/annotate.c | 6 +
> tools/perf/util/auxtrace.c | 6 +-
> tools/perf/util/auxtrace.h | 1 +
> tools/perf/util/bpf-loader.c | 3 +
> tools/perf/util/bpf-loader.h | 2 +
> tools/perf/util/bpf-prologue.c | 1 +
> tools/perf/util/bpf-prologue.h | 2 +
> tools/perf/util/build-id.c | 9 +-
> tools/perf/util/build-id.h | 4 +-
> tools/perf/util/c++/clang-c.h | 1 +
> tools/perf/util/callchain.c | 1 +
> tools/perf/util/cgroup.c | 5 +-
> tools/perf/util/cloexec.c | 1 +
> tools/perf/util/comm.c | 1 +
> tools/perf/util/config.c | 3 +
> tools/perf/util/counts.c | 2 +
> tools/perf/util/cpumap.c | 3 +
> tools/perf/util/ctype.c | 2 +-
> tools/perf/util/data-convert-bt.c | 4 +
> tools/perf/util/data.c | 1 +
> tools/perf/util/debug.c | 4 +
> tools/perf/util/demangle-java.c | 2 +
> tools/perf/util/drv_configs.c | 1 +
> tools/perf/util/dso.c | 4 +
> tools/perf/util/dwarf-aux.c | 3 +
> tools/perf/util/dwarf-regs.c | 1 +
> tools/perf/util/env.c | 1 +
> tools/perf/util/event.c | 7 +-
> tools/perf/util/evlist.c | 2 +
> tools/perf/util/evlist.h | 1 +
> tools/perf/util/evsel.c | 4 +
> tools/perf/util/evsel_fprintf.c | 2 +
> tools/perf/util/header.c | 5 +
> tools/perf/util/hist.c | 2 +
> tools/perf/util/intel-bts.c | 2 +
> tools/perf/util/intel-pt.c | 1 +
> tools/perf/util/jitdump.c | 7 +-
> tools/perf/util/lzma.c | 1 +
> tools/perf/util/machine.c | 8 +-
> tools/perf/util/map.c | 2 +-
> tools/perf/util/mem-events.c | 1 +
> tools/perf/util/ordered-events.c | 2 +
> tools/perf/util/parse-events.c | 7 +-
> tools/perf/util/path.c | 28 ++-
> tools/perf/util/path.h | 9 +
> tools/perf/util/perf-hooks.c | 1 +
> tools/perf/util/pmu.c | 2 +
> tools/perf/util/print_binary.c | 55 +++++
> tools/perf/util/print_binary.h | 28 +++
> tools/perf/util/probe-event.c | 5 +
> tools/perf/util/probe-event.h | 7 +-
> tools/perf/util/probe-file.c | 3 +
> tools/perf/util/probe-file.h | 6 +-
> tools/perf/util/probe-finder.c | 3 +
> tools/perf/util/probe-finder.h | 2 +-
> tools/perf/util/python-ext-sources | 1 +
> tools/perf/util/python.c | 1 +
> tools/perf/util/quote.c | 1 +
> tools/perf/util/record.c | 1 +
> tools/perf/util/sane_ctype.h | 51 +++++
> .../perf/util/scripting-engines/trace-event-perl.c | 1 +
> .../util/scripting-engines/trace-event-python.c | 2 +
> tools/perf/util/session.c | 2 +
> tools/perf/util/session.h | 1 +
> tools/perf/util/sort.c | 5 +
> tools/perf/util/sort.h | 4 +-
> tools/perf/util/srcline.c | 2 +
> tools/perf/util/srcline.h | 34 +++
> tools/perf/util/stat.c | 2 +
> tools/perf/util/strbuf.c | 1 +
> tools/perf/util/strfilter.c | 5 +-
> tools/perf/util/string.c | 18 +-
> tools/perf/util/string2.h | 42 ++++
> tools/perf/util/symbol-elf.c | 3 +-
> tools/perf/util/symbol-minimal.c | 1 +
> tools/perf/util/symbol.c | 3 +
> tools/perf/util/symbol.h | 2 +-
> tools/perf/util/term.c | 6 +-
> tools/perf/util/thread-stack.c | 1 +
> tools/perf/util/thread.c | 2 +
> tools/perf/util/thread_map.c | 2 +
> tools/perf/util/trace-event-parse.c | 3 +-
> tools/perf/util/unwind-libdw.c | 1 +
> tools/perf/util/unwind-libunwind-local.c | 2 +
> tools/perf/util/util.c | 64 +-----
> tools/perf/util/util.h | 249 +--------------------
> tools/perf/util/vdso.c | 2 +-
> 180 files changed, 659 insertions(+), 376 deletions(-)
> create mode 100644 tools/include/linux/bug.h
> create mode 100644 tools/perf/util/path.h
> create mode 100644 tools/perf/util/print_binary.c
> create mode 100644 tools/perf/util/print_binary.h
> create mode 100644 tools/perf/util/sane_ctype.h
> create mode 100644 tools/perf/util/srcline.h
> create mode 100644 tools/perf/util/string2.h

Pulled, thanks a lot Arnaldo!

> For this specific pull request the samples/bpf/ was disabled, as 'make headers_install'
> is failing with the following error, in this case in fedora:rawhide:
>
> INSTALL usr/include/uapi/ (0 file)
> /git/linux/scripts/Makefile.headersinst:62: *** Missing generated UAPI file
./arch/x86/include/generated/uapi/asm/unistd_32.h. Stop.
> make[1]: *** [/git/linux/Makefile:1151: headers_install] Error 2
> make[1]: Leaving directory '/tmp/build/linux'
> make: *** [Makefile:152: sub-make] Error 2
> make: Leaving directory '/git/linux'

Beyond this build fix, could we also do a header file synchronization round:

Warning: include/uapi/linux/stat.h differs from kernel
Warning: arch/x86/include/asm/cpufeatures.h differs from kernel
Warning: arch/x86/lib/memcpy_64.S differs from kernel

... so that Linus does not see these warnings when pulling these bits in the merge
window?

Thanks,

Ingo