perf/urgent fixes
Arnaldo Carvalho de Melo
maintainerHi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit 092150a25cb7bd6a79aa00bb1ad131063f58073d:
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid (2018-07-09 17:16:11 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo-4.18-20180711
for you to fetch changes up to 32aa928a7b817140c84987b726d5014911808fa4:
perf tools: Use python-config --includes rather than --cflags (2018-07-11 09:48:31 -0400)
----------------------------------------------------------------
perf/urgent fixes:
python interface:
- Make 'perf script -g python' generate scripts that are compatible with both python 2 and 3 (Jeremy Cline)
- Fix python dictionary reference counting (Janne Huttunen)
- Add python3 support for various python scripts (Jeremy Cline)
- Use python-config --includes rather than --cflags, fixing the build on Fedora, where the python 3.7 started adding -flto to what
perf stat:
- Remove needless extra header line in --interval_clear (Jiri Olsa) python-config --cflags generate, breaking the perf build (Jeremy Cline)
Build:
- Fix compilation errors on gcc8 (Jiri Olsa)
perf llvm-utils:
- Remove bashism from kernel include fetch script (Kim Phillips)
perf test: (Kim Phillips)
- Replace '|&' with '2>&1 |' to work with more shells
- Make perf's inet_pton test more portable
- Prevent temporary editor files from being considered test scripts
----------------------------------------------------------------
Janne Huttunen (1):
perf script python: Fix dict reference counting
Jeremy Cline (7):
perf tools: Generate a Python script compatible with Python 2 and 3 perf scripts python: Add Python 3 support to Core.py perf scripts python: Add Python 3 support to SchedGui.py perf scripts python: Add Python 3 support to Util.py perf scripts python: Add Python 3 support to sched-migration.py perf scripts python: Add Python 3 support to EventClass.py perf tools: Use python-config --includes rather than --cflags
Jiri Olsa (2):
perf tools: Fix compilation errors on gcc8
perf stat: Fix --interval_clear option
Kim Phillips (4):
perf test shell: Replace '|&' with '2>&1 |' to work with more shells perf test shell: Make perf's inet_pton test more portable
perf llvm-utils: Remove bashism from kernel include fetch script perf test shell: Prevent temporary editor files from being considered test scripts
tools/perf/Makefile.config | 3 +- tools/perf/arch/x86/util/perf_regs.c | 2 +- tools/perf/builtin-stat.c | 2 +- tools/perf/jvmti/jvmti_agent.c | 3 +- .../python/Perf-Trace-Util/lib/Perf/Trace/Core.py | 40 +++++++++------------- .../Perf-Trace-Util/lib/Perf/Trace/EventClass.py | 4 ++- .../Perf-Trace-Util/lib/Perf/Trace/SchedGui.py | 2 +- .../python/Perf-Trace-Util/lib/Perf/Trace/Util.py | 11 +++--- tools/perf/scripts/python/sched-migration.py | 14 +++++--- tools/perf/tests/builtin-test.c | 2 +- .../tests/shell/record+probe_libc_inet_pton.sh | 37 +++++++++++--------- tools/perf/tests/shell/trace+probe_vfs_getname.sh | 2 +- tools/perf/util/llvm-utils.c | 6 ++-- .../util/scripting-engines/trace-event-python.c | 37 +++++++++----------- 14 files changed, 84 insertions(+), 81 deletions(-)
Test results:
The first ones are container (docker) based builds of tools/perf with and without libelf support. Where clang is available, it is also used to build perf with/without libelf, and building with LIBCLANGLLVM=1 (built-in clang) with gcc and clang when clang and its devel libraries are installed.
The objtool and samples/bpf/ builds are disabled now that I'm switching from using the sources in a local volume to fetching them from a http server to build it inside the container, to make it easier to build in a container cluster. Those will come back later.
Several are cross builds, the ones with -x-ARCH and the android one, and those may not have all the features built, due to lack of multi-arch devel packages, available and being used so far on just a few, like debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands with a variety of command line event specifications to then intercept the sys_perf_event syscall to check that the perf_event_attr fields are set up as expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/ with a variety of feature sets, exercising the build with an incomplete set of features as well as with a complete one. It is planned to have it run on each of the containers mentioned above, using some container orchestration infrastructure. Get in contact if interested in helping having this in place.
# dm 1 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0 2 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822 3 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0 4 alpine:3.7 : Ok gcc (Alpine 6.4.0) 6.4.0 5 alpine:edge : Ok gcc (Alpine 6.4.0) 6.4.0 6 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11) 7 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5) 8 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 9 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 10 centos:5 : Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55) 11 centos:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) 12 centos:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28) 13 debian:7 : Ok gcc (Debian 4.7.2-5) 4.7.2 14 debian:8 : Ok gcc (Debian 4.9.2-10+deb8u1) 4.9.2 15 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516 16 debian:experimental : Ok gcc (Debian 7.3.0-15) 7.3.0 17 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 7.3.0-15) 7.3.0 18 debian:experimental-x-mips : Ok mips-linux-gnu-gcc (Debian 7.3.0-19) 7.3.0 19 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 7.3.0-18) 7.3.0 20 debian:experimental-x-mipsel : Ok mipsel-linux-gnu-gcc (Debian 7.3.0-20) 7.3.0 21 fedora:20 : Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7) 22 fedora:21 : Ok gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6) 23 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 24 fedora:23 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 25 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1) 26 fedora:24-x-ARC-uClibc : Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710 27 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1) 28 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2) 29 fedora:27 : Ok gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5) <disneyland NMI>
# git log --oneline -1
32aa928a7b81 (HEAD -> perf/urgent, acme.korg/perf/urgent) perf tools: Use python-config --includes rather than --cflags
# perf version --build-options
perf version 4.18.rc4.g32aa92
dwarf: [ on ] # HAVE_DWARF_SUPPORT
dwarf_getlocations: [ on ] # HAVE_DWARF_GETLOCATIONS_SUPPORT
glibc: [ on ] # HAVE_GLIBC_SUPPORT
gtk2: [ on ] # HAVE_GTK2_SUPPORT
syscall_table: [ on ] # HAVE_SYSCALL_TABLE_SUPPORT
libbfd: [ on ] # HAVE_LIBBFD_SUPPORT
libelf: [ on ] # HAVE_LIBELF_SUPPORT
libnuma: [ on ] # HAVE_LIBNUMA_SUPPORT
numa_num_possible_cpus: [ on ] # HAVE_LIBNUMA_SUPPORT
libperl: [ on ] # HAVE_LIBPERL_SUPPORT
libpython: [ on ] # HAVE_LIBPYTHON_SUPPORT
libslang: [ on ] # HAVE_SLANG_SUPPORT
libcrypto: [ on ] # HAVE_LIBCRYPTO_SUPPORT
libunwind: [ on ] # HAVE_LIBUNWIND_SUPPORT
libdw-dwarf-unwind: [ on ] # HAVE_DWARF_SUPPORT
zlib: [ on ] # HAVE_ZLIB_SUPPORT
lzma: [ on ] # HAVE_LZMA_SUPPORT
get_cpuid: [ on ] # HAVE_AUXTRACE_SUPPORT
bpf: [ on ] # HAVE_LIBBPF_SUPPORT
# uname -a
Linux jouet 4.18.0-rc4-00054-ga74aa9676c02 #5 SMP Wed Jul 11 14:05:26 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Test data source output : Ok
6: Parse event definition strings : Ok
7: Simple expression parser : Ok
8: PERF_RECORD_* events & perf_sample fields : Ok
9: Parse perf pmu format : Ok
10: DSO data read : Ok
11: DSO data cache : Ok
12: DSO data reopen : Ok
13: Roundtrip evsel->name : Ok
14: Parse sched tracepoints fields : Ok
15: syscalls:sys_enter_openat event fields : Ok
16: Setup struct perf_event_attr : Ok
17: Match and link multiple hists : Ok
18: 'import perf' in python : Ok
19: Breakpoint overflow signal handler : Ok
20: Breakpoint overflow sampling : Ok
21: Breakpoint accounting : Ok
22: Number of exit events of a simple workload : Ok
23: Software clock events period values : Ok
24: Object code reading : Ok
25: Sample parsing : Ok
26: Use a dummy software event to keep tracking : Ok
27: Parse with no sample_id_all bit set : Ok
28: Filter hist entries : Ok
29: Lookup mmap thread : Ok
30: Share thread mg : Ok
31: Sort output of hist entries : Ok
32: Cumulate child hist entries : Ok
33: Track with sched_switch : Ok
34: Filter fds with revents mask in a fdarray : Ok
35: Add fd to a fdarray, making it autogrow : Ok
36: kmod_path__parse : Ok
37: Thread map : Ok
38: LLVM search and compile :
38.1: Basic BPF llvm compile : Ok
38.2: kbuild searching : Ok
38.3: Compile source for BPF prologue generation : Ok
38.4: Compile source for BPF relocation : Ok
39: Session topology : Ok
40: BPF filter :
40.1: Basic BPF filtering : Ok
40.2: BPF pinning : Ok
40.3: BPF prologue generation : Ok
40.4: BPF relocation checker : Ok
41: Synthesize thread map : Ok
42: Remove thread map : Ok
43: Synthesize cpu map : Ok
44: Synthesize stat config : Ok
45: Synthesize stat : Ok
46: Synthesize stat round : Ok
47: Synthesize attr update : Ok
48: Event times : Ok
49: Read backward ring buffer : Ok
50: Print cpu map : Ok
51: Probe SDT events : Ok
52: is_printable_array : Ok
53: Print bitmap : Ok
54: perf hooks : Ok
55: builtin clang support : Skip (not compiled in)
56: unit_number__scnprintf : Ok
57: mem2node : Ok
58: x86 rdpmc : Ok
59: Convert perf time to TSC : Ok
60: DWARF unwind : Ok
61: x86 instruction decoder - new instructions : Ok
62: Use vfs_getname probe to get syscall args filenames : Ok
63: Check open filename arg using perf trace + vfs_getname: Ok
64: probe libc's inet_pton & backtrace it with ping : Ok
65: Add vfs_getname probe to get syscall args filenames : Ok
# $ make -C tools/perf build-test
make: Entering directory '/home/acme/git/perf/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_clean_all_O: make clean all
make_perf_o_O: make perf.o
make_no_gtk2_O: make NO_GTK2=1
make_no_demangle_O: make NO_DEMANGLE=1
make_help_O: make help
make_doc_O: make doc
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_static_O: make LDFLAGS=-static
make_util_map_o_O: make util/map.o
make_no_libunwind_O: make NO_LIBUNWIND=1
make_minimal_O: 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
make_with_babeltrace_O: make LIBBABELTRACE=1
make_no_libperl_O: make NO_LIBPERL=1
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_no_auxtrace_O: make NO_AUXTRACE=1
make_no_backtrace_O: make NO_BACKTRACE=1
make_no_libpython_O: make NO_LIBPYTHON=1
make_pure_O: make
make_no_libaudit_O: make NO_LIBAUDIT=1
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_no_libbionic_O: make NO_LIBBIONIC=1
make_install_prefix_O: make install prefix=/tmp/krava
make_tags_O: make tags
make_no_slang_O: make NO_SLANG=1
make_install_O: make install
make_no_libnuma_O: make NO_LIBNUMA=1
make_no_libbpf_O: make NO_LIBBPF=1
make_no_libelf_O: make NO_LIBELF=1
make_install_bin_O: make install-bin
make_debug_O: make DEBUG=1
make_no_newt_O: make NO_NEWT=1
OK
make: Leaving directory '/home/acme/git/perf/tools/perf'
$Arnaldo Carvalho de Melo
maintainerPATCH 1/14 perf tools: Generate a Python script compatible with Python 2 and 3
From: Jeremy Cline <[email protected]>
When generating a Python script with "perf script -g python", produce one that is compatible with Python 2 and 3. The difference between the two generated scripts is:
--- python2-perf-script.py 2018-05-08 15:35:00.865889705 -0400
+++ python3-perf-script.py 2018-05-08 15:34:49.019789564 -0400
@@ -7,6 +7,8 @@
# be retrieved using Python functions of the form common_*(context). # See the perf-script-python Documentation for the list of available functions.
+from __future__ import print_function
+
import os
import sys
@@ -18,10 +20,10 @@
def trace_begin():
- print "in trace_begin"
+ print("in trace_begin")
def trace_end():
- print "in trace_end"
+ print("in trace_end")
def raw_syscalls__sys_enter(event_name, context, common_cpu,
common_secs, common_nsecs, common_pid, common_comm,
@@ -29,26 +31,26 @@
print_header(event_name, common_cpu, common_secs, common_nsecs,
common_pid, common_comm)
- print "id=%d, args=%s" % \
- (id, args)
+ print("id=%d, args=%s" % \
+ (id, args)) - print 'Sample: {'+get_dict_as_string(perf_sample_dict['sample'], ', ')+'}'
+ print('Sample: {'+get_dict_as_string(perf_sample_dict['sample'], ', ')+'}')
for node in common_callchain:
if 'sym' in node:
- print "\t[%x] %s" % (node['ip'], node['sym']['name'])
+ print("\t[%x] %s" % (node['ip'], node['sym']['name']))
else:
- print " [%x]" % (node['ip'])
+ print(" [%x]" % (node['ip']))
- print "\n"
+ print()
def trace_unhandled(event_name, context, event_fields_dict, perf_sample_dict):
- print get_dict_as_string(event_fields_dict)
- print 'Sample: {'+get_dict_as_string(perf_sample_dict['sample'], ', ')+'}'
+ print(get_dict_as_string(event_fields_dict))
+ print('Sample: {'+get_dict_as_string(perf_sample_dict['sample'], ', ')+'}')
def print_header(event_name, cpu, secs, nsecs, pid, comm):
- print "%-20s %5u %05u.%09u %8u %-20s " % \
- (event_name, cpu, secs, nsecs, pid, comm),
+ print("%-20s %5u %05u.%09u %8u %-20s " % \
+ (event_name, cpu, secs, nsecs, pid, comm), end="")
def get_dict_as_string(a_dict, delimiter=' '):
return delimiter.join(['%s=%s'%(k,str(v))for k,v in sorted(a_dict.items())])
--- .../util/scripting-engines/trace-event-python.c | 29 +++++++++++----------- 1 file changed, 15 insertions(+), 14 deletions(-)
tools/perf/util/scripting-engines/trace-event-python.c +15 -14
@@ -1627,6 +1627,7 @@ static int python_generate_script(struct pevent *pevent, const char *outfile)fprintf (ofp,"# See the perf-script-python Documentation for the list " "of available functions.\n\n" ); +fprintf (ofp,"from __future__ import print_function\n\n" );fprintf (ofp,"import os\n" );fprintf (ofp,"import sys\n\n" );
@@ -1636,10 +1637,10 @@ static int python_generate_script(struct pevent *pevent, const char *outfile)fprintf (ofp,"from Core import *\n\n\n" );fprintf (ofp,"def trace_begin():\n" ); -fprintf (ofp,"\tprint \"in trace_begin\"\n\n" ); +fprintf (ofp,"\tprint(\"in trace_begin\")\n\n" );fprintf (ofp,"def trace_end():\n" ); -fprintf (ofp,"\tprint \"in trace_end\"\n\n" ); +fprintf (ofp,"\tprint(\"in trace_end\")\n\n" );while ((event =trace_find_next_event (pevent, event))) {fprintf (ofp,"def %s__%s(" , event->system, event->name);
@@ -1675,7 +1676,7 @@ static int python_generate_script(struct pevent *pevent, const char *outfile)"common_secs, common_nsecs,\n\t\t\t" "common_pid, common_comm)\n\n"); -fprintf (ofp,"\t\tprint \"" ); +fprintf (ofp,"\t\tprint(\"" ); not_first =0 ; count =0 ;
@@ -1736,31 +1737,31 @@ static int python_generate_script(struct pevent *pevent, const char *outfile)fprintf (ofp,"%s" , f->name); } -fprintf (ofp,")\n\n" ); +fprintf (ofp,"))\n\n" ); -fprintf (ofp,"\t\tprint 'Sample: {'+" -"get_dict_as_string(perf_sample_dict['sample'], ', ')+'}'\n\n" ); +fprintf (ofp,"\t\tprint('Sample: {'+" +"get_dict_as_string(perf_sample_dict['sample'], ', ')+'}')\n\n" );fprintf (ofp,"\t\tfor node in common_callchain:" );fprintf (ofp,"\n\t\t\tif 'sym' in node:" ); -fprintf (ofp,"\n\t\t\t\tprint \"\\t[%%x] %%s\" %% (node['ip'], node['sym']['name'])" ); +fprintf (ofp,"\n\t\t\t\tprint(\"\\t[%%x] %%s\" %% (node['ip'], node['sym']['name']))" );fprintf (ofp,"\n\t\t\telse:" ); -fprintf (ofp,"\n\t\t\t\tprint \"\t[%%x]\" %% (node['ip'])\n\n" ); -fprintf (ofp,"\t\tprint \"\\n\"\n\n" ); +fprintf (ofp,"\n\t\t\t\tprint(\"\t[%%x]\" %% (node['ip']))\n\n" ); +fprintf (ofp,"\t\tprint()\n\n" ); }fprintf (ofp,"def trace_unhandled(event_name, context, " "event_fields_dict, perf_sample_dict):\n" ); -fprintf (ofp,"\t\tprint get_dict_as_string(event_fields_dict)\n" ); -fprintf (ofp,"\t\tprint 'Sample: {'+" -"get_dict_as_string(perf_sample_dict['sample'], ', ')+'}'\n\n" ); +fprintf (ofp,"\t\tprint(get_dict_as_string(event_fields_dict))\n" ); +fprintf (ofp,"\t\tprint('Sample: {'+" +"get_dict_as_string(perf_sample_dict['sample'], ', ')+'}')\n\n" );fprintf (ofp,"def print_header(" "event_name, cpu, secs, nsecs, pid, comm):\n" -"\tprint \"%%-20s %%5u %%05u.%%09u %%8u %%-20s \" %% \\\n\t" -"(event_name, cpu, secs, nsecs, pid, comm),\n\n" ); +"\tprint(\"%%-20s %%5u %%05u.%%09u %%8u %%-20s \" %% \\\n\t" +"(event_name, cpu, secs, nsecs, pid, comm), end=\"\")\n\n" );fprintf (ofp,"def get_dict_as_string(a_dict, delimiter=' '):\n" "\treturn delimiter.join"
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 2/14 perf scripts python: Add Python 3 support to Core.py
In reply to Arnaldo Carvalho de MeloFrom: Jeremy Cline <[email protected]>
Support both Python 2 and Python 3 in Core.py. This should have no functional change.
--- .../python/Perf-Trace-Util/lib/Perf/Trace/Core.py | 40 +++++++++------------- 1 file changed, 17 insertions(+), 23 deletions(-)
tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py +17 -23
@@ -31,10 +31,8 @@ def flag_str(event_name, field_name, value): string = "" if flag_fields[event_name][field_name]: - print_delim = 0 - keys = flag_fields[event_name][field_name]['values'].keys() - keys.sort() - for idx in keys: + print_delim = 0 + for idx in sorted(flag_fields[event_name][field_name]['values']): if not value and not idx: string += flag_fields[event_name][field_name]['values'][idx] break
@@ -51,14 +49,12 @@ def symbol_str(event_name, field_name, value): string = "" if symbolic_fields[event_name][field_name]: - keys = symbolic_fields[event_name][field_name]['values'].keys() - keys.sort() - for idx in keys: + for idx in sorted(symbolic_fields[event_name][field_name]['values']): if not value and not idx: - string = symbolic_fields[event_name][field_name]['values'][idx] + string = symbolic_fields[event_name][field_name]['values'][idx] break - if (value == idx): - string = symbolic_fields[event_name][field_name]['values'][idx] + if (value == idx): + string = symbolic_fields[event_name][field_name]['values'][idx] break return string
@@ -74,19 +70,17 @@ def trace_flag_str(value): string = "" print_delim = 0 - keys = trace_flags.keys() - - for idx in keys: - if not value and not idx: - string += "NONE" - break - - if idx and (value & idx) == idx: - if print_delim: - string += " | "; - string += trace_flags[idx] - print_delim = 1 - value &= ~idx + for idx in trace_flags: + if not value and not idx: + string += "NONE" + break + + if idx and (value & idx) == idx: + if print_delim: + string += " | "; + string += trace_flags[idx] + print_delim = 1 + value &= ~idx return string
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 3/14 perf scripts python: Add Python 3 support to SchedGui.py
In reply to Arnaldo Carvalho de MeloFrom: Jeremy Cline <[email protected]>
Fix a single syntax error in SchedGui.py to support both Python 2 and Python 3. This should have no functional change.
--- tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/SchedGui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/SchedGui.py +1 -1
@@ -11,7 +11,7 @@ try: import wx except ImportError: - raise ImportError, "You need to install the wxpython lib for this script" + raise ImportError("You need to install the wxpython lib for this script") class RootFrame(wx.Frame):
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 4/14 perf scripts python: Add Python 3 support to Util.py
In reply to Arnaldo Carvalho de MeloFrom: Jeremy Cline <[email protected]>
Support both Python 2 and Python 3 in Util.py. The dict class no longer has a ``has_key`` method and print is now a function rather than a statement. This should have no functional change.
--- .../scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py +6 -5
@@ -5,6 +5,7 @@ # This software may be distributed under the terms of the GNU General # Public License ("GPL") version 2 as published by the Free Software # Foundation. +from __future__ import print_function import errno, os
@@ -33,7 +34,7 @@ def nsecs_str(nsecs): return str def add_stats(dict, key, value): - if not dict.has_key(key): + if key not in dict: dict[key] = (value, value, value, 1) else: min, max, avg, count = dict[key]
@@ -72,10 +73,10 @@ try: except: if not audit_package_warned: audit_package_warned = True - print "Install the audit-libs-python package to get syscall names.\n" \ - "For example:\n # apt-get install python-audit (Ubuntu)" \ - "\n # yum install audit-libs-python (Fedora)" \ - "\n etc.\n" + print("Install the audit-libs-python package to get syscall names.\n" + "For example:\n # apt-get install python-audit (Ubuntu)" + "\n # yum install audit-libs-python (Fedora)" + "\n etc.\n") def syscall_name(id): try:
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 5/14 perf scripts python: Add Python 3 support to sched-migration.py
In reply to Arnaldo Carvalho de MeloFrom: Jeremy Cline <[email protected]>
Support both Python 2 and Python 3 in the sched-migration.py script. This should have no functional change.
--- tools/perf/scripts/python/sched-migration.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
tools/perf/scripts/python/sched-migration.py +9 -5
@@ -9,13 +9,17 @@ # This software is distributed under the terms of the GNU General # Public License ("GPL") version 2 as published by the Free Software # Foundation. - +from __future__ import print_function import os import sys from collections import defaultdict -from UserList import UserList +try: + from UserList import UserList +except ImportError: + # Python 3: UserList moved to the collections package + from collections import UserList sys.path.append(os.environ['PERF_EXEC_PATH'] + \ '/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
@@ -300,7 +304,7 @@ class TimeSliceList(UserList): if i == -1: return - for i in xrange(i, len(self.data)): + for i in range(i, len(self.data)): timeslice = self.data[i] if timeslice.start > end: return
@@ -336,8 +340,8 @@ class SchedEventProxy: on_cpu_task = self.current_tsk[headers.cpu] if on_cpu_task != -1 and on_cpu_task != prev_pid: - print "Sched switch event rejected ts: %s cpu: %d prev: %s(%d) next: %s(%d)" % \ - (headers.ts_format(), headers.cpu, prev_comm, prev_pid, next_comm, next_pid) + print("Sched switch event rejected ts: %s cpu: %d prev: %s(%d) next: %s(%d)" % \ + headers.ts_format(), headers.cpu, prev_comm, prev_pid, next_comm, next_pid) threads[prev_pid] = prev_comm threads[next_pid] = next_comm
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 6/14 perf scripts python: Add Python 3 support to EventClass.py
In reply to Arnaldo Carvalho de MeloFrom: Jeremy Cline <[email protected]>
Support both Python 2 and Python 3 in EventClass.py. ``print`` is now a function rather than a statement. This should have no functional change.
--- .../perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/EventClass.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/EventClass.py +3 -1
@@ -8,6 +8,7 @@ # PerfEvent is the base class for all perf event sample, PebsEvent # is a HW base Intel x86 PEBS event, and user could add more SW/HW # event classes based on requirements. +from __future__ import print_function import struct
@@ -44,7 +45,8 @@ class PerfEvent(object): PerfEvent.event_num += 1 def show(self): - print "PMU event: name=%12s, symbol=%24s, comm=%8s, dso=%12s" % (self.name, self.symbol, self.comm, self.dso) + print("PMU event: name=%12s, symbol=%24s, comm=%8s, dso=%12s" % + (self.name, self.symbol, self.comm, self.dso)) # # Basic Intel PEBS (Precise Event-based Sampling) event, whose raw buffer
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 7/14 perf test shell: Replace '|&' with '2>&1 |' to work with more shells
In reply to Arnaldo Carvalho de MeloFrom: Kim Phillips <[email protected]>
Since we do not specify bash (and/or zsh) as a requirement, use the standard error redirection that is more widely supported.
BEFORE:
$ sudo perf test -v 62 62: Check open filename arg using perf trace + vfs_getname: --- start --- test child forked, pid 27305 ./tests/shell/trace+probe_vfs_getname.sh: 20: ./tests/shell/trace+probe_vfs_getname.sh: Syntax error: "&" unexpected test child finished with -2 ---- end ---- Check open filename arg using perf trace + vfs_getname: Skip
AFTER:
$ sudo perf test -v 62 64: Check open filename arg using perf trace + vfs_getname : --- start --- test child forked, pid 23008 Added new event: probe:vfs_getname (on getname_flags:72 with pathname=result->name:string)
You can now use it in all perf tools, such as:
perf record -e probe:vfs_getname -aR sleep 1
0.361 ( 0.008 ms): touch/23032 openat(dfd: CWD, filename: /tmp/temporary_file.VEh0n, flags: CREAT|NOCTTY|NONBLOCK|WRONLY, mode: IRUGO|IWUGO) = 4
test child finished with 0
---- end ----
Check open filename arg using perf trace + vfs_getname: Ok
Similar to commit 35435cd06081, with the same title.
--- tools/perf/tests/shell/trace+probe_vfs_getname.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/tests/shell/trace+probe_vfs_getname.sh +1 -1
@@ -17,7 +17,7 @@ skip_if_no_perf_probe || exit 2 file=$(mktemp /tmp/temporary_file.XXXXX) trace_open_vfs_getname() { - evts=$(echo $(perf list syscalls:sys_enter_open* |& egrep 'open(at)? ' | sed -r 's/.*sys_enter_([a-z]+) +\[.*$/\1/') | sed 's/ /,/') + evts=$(echo $(perf list syscalls:sys_enter_open* 2>&1 | egrep 'open(at)? ' | sed -r 's/.*sys_enter_([a-z]+) +\[.*$/\1/') | sed 's/ /,/') perf trace -e $evts touch $file 2>&1 | \ egrep " +[0-9]+\.[0-9]+ +\( +[0-9]+\.[0-9]+ ms\): +touch\/[0-9]+ open(at)?\((dfd: +CWD, +)?filename: +${file}, +flags: CREAT\|NOCTTY\|NONBLOCK\|WRONLY, +mode: +IRUGO\|IWUGO\) += +[0-9]+$" }
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 8/14 perf test shell: Make perf's inet_pton test more portable
In reply to Arnaldo Carvalho de MeloFrom: Kim Phillips <[email protected]>
Debian based systems such as Ubuntu have dash as their default shell. Even if the normal or root user's shell is bash, certain scripts still call /bin/sh, which points to dash, so we fix this perf test by rewriting it in a more portable way.
BEFORE:
$ sudo perf test -v 64 64: probe libc's inet_pton & backtrace it with ping : --- start --- test child forked, pid 31942 ./tests/shell/record+probe_libc_inet_pton.sh: 18: ./tests/shell/record+probe_libc_inet_pton.sh: expected[0]=ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\): not found ./tests/shell/record+probe_libc_inet_pton.sh: 19: ./tests/shell/record+probe_libc_inet_pton.sh: expected[1]=.*inet_pton\+0x[[:xdigit:]]+[[:space:]]\(/lib/x86_64-linux-gnu/libc-2.27.so|inlined\)$: not found ./tests/shell/record+probe_libc_inet_pton.sh: 29: ./tests/shell/record+probe_libc_inet_pton.sh: expected[2]=getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\(/lib/x86_64-linux-gnu/libc-2.27.so\)$: not found ./tests/shell/record+probe_libc_inet_pton.sh: 30: ./tests/shell/record+probe_libc_inet_pton.sh: expected[3]=.*\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$: not found ping 31963 [004] 83577.670613: probe_libc:inet_pton: (7fe15f87f4b0) ./tests/shell/record+probe_libc_inet_pton.sh: 39: ./tests/shell/record+probe_libc_inet_pton.sh: Bad substitution ./tests/shell/record+probe_libc_inet_pton.sh: 41: ./tests/shell/record+probe_libc_inet_pton.sh: Bad substitution test child finished with -2 ---- end ---- probe libc's inet_pton & backtrace it with ping: Skip
AFTER:
$ sudo perf test -v 64 64: probe libc's inet_pton & backtrace it with ping : --- start --- test child forked, pid 32277 ping 32295 [001] 83679.690020: probe_libc:inet_pton: (7ff244f504b0) 7ff244f504b0 __GI___inet_pton+0x0 (/lib/x86_64-linux-gnu/libc-2.27.so) 7ff244f14ce4 getaddrinfo+0x124 (/lib/x86_64-linux-gnu/libc-2.27.so) 556ac036b57d _init+0xb75 (/bin/ping) test child finished with 0 ---- end ---- probe libc's inet_pton & backtrace it with ping: Ok
--- .../tests/shell/record+probe_libc_inet_pton.sh | 37 ++++++++++++---------- 1 file changed, 21 insertions(+), 16 deletions(-)
tools/perf/tests/shell/record+probe_libc_inet_pton.sh +21 -16
@@ -14,35 +14,40 @@ libc=$(grep -w libc /proc/self/maps | head -1 | sed -r 's/.*[[:space:]](\/.*)/\1 nm -Dg $libc 2>/dev/null | fgrep -q inet_pton || exit 254 trace_libc_inet_pton_backtrace() { - idx=0 - expected[0]="ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\)" - expected[1]=".*inet_pton\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" + + expected=`mktemp -u /tmp/expected.XXX` + + echo "ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\)" > $expected + echo ".*inet_pton\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" >> $expected case "$(uname -m)" in s390x) eventattr='call-graph=dwarf,max-stack=4' - expected[2]="gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" - expected[3]="(__GI_)?getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" - expected[4]="main\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$" + echo "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" >> $expected + echo "(__GI_)?getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" >> $expected + echo "main\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$" >> $expected ;; *) eventattr='max-stack=3' - expected[2]="getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" - expected[3]=".*\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$" + echo "getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected + echo ".*\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$" >> $expected ;; esac - file=`mktemp -u /tmp/perf.data.XXX` + perf_data=`mktemp -u /tmp/perf.data.XXX` + perf_script=`mktemp -u /tmp/perf.script.XXX` + perf record -e probe_libc:inet_pton/$eventattr/ -o $perf_data ping -6 -c 1 ::1 > /dev/null 2>&1 + perf script -i $perf_data > $perf_script - perf record -e probe_libc:inet_pton/$eventattr/ -o $file ping -6 -c 1 ::1 > /dev/null 2>&1 - perf script -i $file | while read line ; do + exec 3<$perf_script + exec 4<$expected + while read line <&3 && read -r pattern <&4; do + [ -z "$pattern" ] && break echo $line - echo "$line" | egrep -q "${expected[$idx]}" + echo "$line" | egrep -q "$pattern" if [ $? -ne 0 ] ; then - printf "FAIL: expected backtrace entry %d \"%s\" got \"%s\"\n" $idx "${expected[$idx]}" "$line" + printf "FAIL: expected backtrace entry \"%s\" got \"%s\"\n" "$pattern" "$line" exit 1 fi - let idx+=1 - [ -z "${expected[$idx]}" ] && break done # If any statements are executed from this point onwards,
@@ -58,6 +63,6 @@ skip_if_no_perf_probe && \ perf probe -q $libc inet_pton && \ trace_libc_inet_pton_backtrace err=$? -rm -f ${file} +rm -f ${perf_data} ${perf_script} ${expected} perf probe -q -d probe_libc:inet_pton exit $err
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 9/14 perf llvm-utils: Remove bashism from kernel include fetch script
In reply to Arnaldo Carvalho de MeloFrom: Kim Phillips <[email protected]>
Like system(), popen() calls /bin/sh, which may/may not be bash.
Script when run on dash and encounters the line, yields:
exit: Illegal number: -1
checkbashisms report on script content:
possible bashism (exit|return with negative status code):
exit -1
Remove the bashism and use the more portable non-zero failure status code 1.
--- tools/perf/util/llvm-utils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
tools/perf/util/llvm-utils.c +3 -3
@@ -266,16 +266,16 @@ static const char *kinc_fetch_script ="#!/usr/bin/env sh\n" "if ! test -d \"$KBUILD_DIR\"\n" "then\n" -" exit -1\n" +" exit 1\n" "fi\n" "if ! test -f \"$KBUILD_DIR/include/generated/autoconf.h\"\n" "then\n" -" exit -1\n" +" exit 1\n" "fi\n" "TMPDIR=`mktemp -d`\n" "if test -z \"$TMPDIR\"\n" "then\n" -" exit -1\n" +" exit 1\n" "fi\n" "cat << EOF > $TMPDIR/Makefile\n" "obj-y := dummy.o\n"
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 10/14 perf test shell: Prevent temporary editor files from being considered test scripts
In reply to Arnaldo Carvalho de MeloFrom: Kim Phillips <[email protected]>
Allows a perf shell test developer to concurrently edit and run their test scripts, avoiding perf test attempts to execute their editor temporary files, such as seen here:
$ sudo taskset -c 0 ./perf test -vvvvvvvv -F 63 63: 0VIM 8.0 : --- start --- sh: 1: ./tests/shell/.record+probe_libc_inet_pton.sh.swp: Permission denied ---- end ---- 0VIM 8.0: FAILED!
--- tools/perf/tests/builtin-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/tests/builtin-test.c +1 -1
@@ -422,7 +422,7 @@ static const char *shell_test__description(char *description, size_t size,#define for_each_shell_test (dir, base, ent) \ while ((ent = readdir(dir)) != NULL) \ - if (!is_directory(base, ent)) + if (!is_directory(base, ent) && ent->d_name[0] != '.')static const char *shell_tests__dir (char *path,size_t size) {
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 11/14 perf tools: Fix compilation errors on gcc8
In reply to Arnaldo Carvalho de MeloFrom: Jiri Olsa <[email protected]>
We are getting following warnings on gcc8 that break compilation:
$ make
CC jvmti/jvmti_agent.o
jvmti/jvmti_agent.c: In function ‘jvmti_open’:
jvmti/jvmti_agent.c:252:35: error: ‘/jit-’ directive output may be truncated \
writing 5 bytes into a region of size between 1 and 4096 [-Werror=format-truncation=]
snprintf(dump_path, PATH_MAX, "%s/jit-%i.dump", jit_path, getpid());There's no point in checking the result of snprintf call in jvmti_open, the following open call will fail in case the name is mangled or too long.
Using tools/lib/ function scnprintf that touches the return value from the snprintf() calls and thus get rid of those warnings.
$ make DEBUG=1
CC arch/x86/util/perf_regs.o
arch/x86/util/perf_regs.c: In function ‘arch_sdt_arg_parse_op’:
arch/x86/util/perf_regs.c:229:4: error: ‘strncpy’ output truncated before terminating nul
copying 2 bytes from a string of the same length [-Werror=stringop-truncation]
strncpy(prefix, "+0", 2);
^~~~~~~~~~~~~~~~~~~~~~~~Using scnprintf instead of the strncpy (which we know is safe in here) to get rid of that warning.
--- tools/perf/arch/x86/util/perf_regs.c | 2 +- tools/perf/jvmti/jvmti_agent.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-)
tools/perf/arch/x86/util/perf_regs.c +1 -1
@@ -226,7 +226,7 @@ int arch_sdt_arg_parse_op(char *old_op, char **new_op)else if (rm[2 ].rm_so != rm[2 ].rm_eo) prefix[0 ] ='+' ;else -strncpy (prefix,"+0" ,2 ); +scnprintf (prefix,sizeof (prefix),"+0" ); }/* Rename register */
tools/perf/jvmti/jvmti_agent.c +2 -1
@@ -35,6 +35,7 @@#include <sys/mman.h> #include <syscall.h> /* for gettid() */ #include <err.h> +#include <linux/kernel.h> #include "jvmti_agent.h" #include "../util/jitdump.h"
@@ -249,7 +250,7 @@ void *jvmti_open(void)/* * jitdump file name */ -snprintf (dump_path,PATH_MAX ,"%s/jit-%i.dump" , jit_path,getpid ()); +scnprintf (dump_path,PATH_MAX ,"%s/jit-%i.dump" , jit_path,getpid ()); fd =open (dump_path,O_CREAT |O_TRUNC |O_RDWR ,0666 );if (fd ==-1 )
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 12/14 perf stat: Fix --interval_clear option
In reply to Arnaldo Carvalho de MeloFrom: Jiri Olsa <[email protected]>
Currently we display extra header line, like:
# perf stat -I 1000 -a --interval-clear
# time counts unit events
insn per cycle branch-misses of all branches
2.964917103 3855.349912 cpu-clock (msec) # 3.855 CPUs utilized
2.964917103 23,993 context-switches # 0.006 M/sec
2.964917103 1,301 cpu-migrations # 0.329 K/sec
...Fixing the condition and getting proper:
# perf stat -I 1000 -a --interval-clear
# time counts unit events
2.359048938 1432.492228 cpu-clock (msec) # 1.432 CPUs utilized
2.359048938 7,613 context-switches # 0.002 M/sec
2.359048938 419 cpu-migrations # 0.133 K/sec
...--- tools/perf/builtin-stat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/builtin-stat.c +1 -1
@@ -1742,7 +1742,7 @@ static void print_interval(char *prefix, struct timespec *ts) } } -if ((num_print_interval ==0 && metric_only) || interval_clear) +if ((num_print_interval ==0 || interval_clear) && metric_only)print_metric_headers (" " , true);if (++num_print_interval ==25 ) num_print_interval =0 ;
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 13/14 perf script python: Fix dict reference counting
In reply to Arnaldo Carvalho de MeloFrom: Janne Huttunen <[email protected]>
The dictionaries are attached to the parameter tuple that steals the references and takes care of releasing them when appropriate. The code should not decrement the reference counts explicitly. E.g. if libpython has been built with reference debugging enabled, the superfluous DECREFs will trigger this error when running perf script:
Fatal Python error: Objects/tupleobject.c:238 object at 0x7f10f2041b40 has negative ref count -1 Aborted (core dumped)
If the reference debugging is not enabled, the superfluous DECREFs might cause the dict objects to be silently released while they are still in use. This may trigger various other assertions or just cause perf crashes and/or weird and unexpected data changes in the stored Python objects.
--- tools/perf/util/scripting-engines/trace-event-python.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)
tools/perf/util/scripting-engines/trace-event-python.c +2 -6
@@ -908,14 +908,11 @@ static void python_process_tracepoint(struct perf_sample *sample,if (_PyTuple_Resize (&t, n) ==-1 )Py_FatalError ("error resizing Python tuple" ); -if (!dict) { +if (!dict)call_object (handler, t, handler_name); - }else { +else call_object (handler, t, default_handler_name); -Py_DECREF (dict); - } -Py_XDECREF (all_entries_dict);Py_DECREF (t); }
@@ -1235,7 +1232,6 @@ static void python_process_general_event(struct perf_sample *sample,call_object (handler, t, handler_name); -Py_DECREF (dict);Py_DECREF (t); }
Signature · 1 line
2.14.4
Arnaldo Carvalho de Melo
maintainerPATCH 14/14 perf tools: Use python-config --includes rather than --cflags
In reply to Arnaldo Carvalho de MeloFrom: Jeremy Cline <[email protected]>
Builds started failing in Fedora on Python 3.7 with:
.gnu.debuglto_.debug_macro' referenced in section .gnu.debuglto_.debug_macro' of util/scripting-engines/trace-event-python.o: defined in discarded section
In Fedora, Python 3.7 added -flto to the list of --cflags and since it was only applied to util/scripting-engines/trace-event-python.c and scripts/python/Perf-Trace-Util/Context.c, linking failed.
It's not the first time the addition of flags has broken builds: commit c6707fdef7e2 ("perf tools: Fix up build in hardnened environments") appears to have fixed a similar problem. "python-config --includes" provides the proper -I flags and doesn't introduce additional CFLAGS.
--- tools/perf/Makefile.config | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
tools/perf/Makefile.config +1 -2
@@ -207,8 +207,7 @@ ifdef PYTHON_CONFIG PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null) PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) -lutil - PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null) - PYTHON_EMBED_CCOPTS := $(filter-out -specs=%,$(PYTHON_EMBED_CCOPTS)) + PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --includes 2>/dev/null) FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) endif
Signature · 1 line
2.14.4
Quoted 81 lines · Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit
092150a25cb7bd6a79aa00bb1ad131063f58073d:Merge branch 'for-linus' of
git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid(2018-07-09 17:16:11 -0700)are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.gittags/perf-urgent-for-mingo-4.18-20180711for you to fetch changes up to
32aa928a7b817140c84987b726d5014911808fa4:perf tools: Use python-config --includes rather than --cflags (2018-07-11 09:48:31 -0400)----------------------------------------------------------------
perf/urgent fixes:python interface:
- Make 'perf script -g python' generate scripts that are compatible with both python 2 and 3 (Jeremy Cline)
- Fix python dictionary reference counting (Janne Huttunen)
- Add python3 support for various python scripts (Jeremy Cline)
- Use python-config --includes rather than --cflags, fixing the build on Fedora, where the python 3.7 started adding -flto to what
perf stat:
- Remove needless extra header line in --interval_clear (Jiri Olsa) python-config --cflags generate, breaking the perf build (Jeremy Cline)
Build:
- Fix compilation errors on gcc8 (Jiri Olsa)
perf llvm-utils:
- Remove bashism from kernel include fetch script (Kim Phillips)
perf test: (Kim Phillips)
- Replace '|&' with '2>&1 |' to work with more shells
- Make perf's
inet_ptontest more portable- Prevent temporary editor files from being considered test scripts
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>----------------------------------------------------------------
Janne Huttunen (1):
perf script python: Fix dict reference countingJeremy Cline (7):
perf tools: Generate a Python script compatible with Python 2 and 3 perf scripts python: Add Python 3 support toCore.pyperf scripts python: Add Python 3 support toSchedGui.pyperf scripts python: Add Python 3 support toUtil.pyperf scripts python: Add Python 3 support tosched-migration.pyperf scripts python: Add Python 3 support toEventClass.pyperf tools: Use python-config --includes rather than --cflagsJiri Olsa (2):
perf tools: Fix compilation errors on gcc8
perf stat: Fix --interval_clear optionKim Phillips (4):
perf test shell: Replace '|&' with '2>&1 |' to work with more shells perf test shell: Make perf'sinet_ptontest more portable
perf llvm-utils: Remove bashism from kernel include fetch script perf test shell: Prevent temporary editor files from being considered test scripts
Quoted 15 lines
tools/perf/Makefile.config | 3 +- tools/perf/arch/x86/util/perf_regs.c | 2 +- tools/perf/builtin-stat.c | 2 +- tools/perf/jvmti/jvmti_agent.c | 3 +- .../python/Perf-Trace-Util/lib/Perf/Trace/Core.py | 40 +++++++++------------- .../Perf-Trace-Util/lib/Perf/Trace/EventClass.py | 4 ++- .../Perf-Trace-Util/lib/Perf/Trace/SchedGui.py | 2 +- .../python/Perf-Trace-Util/lib/Perf/Trace/Util.py | 11 +++--- tools/perf/scripts/python/sched-migration.py | 14 +++++--- tools/perf/tests/builtin-test.c | 2 +- .../tests/shell/record+probe_libc_inet_pton.sh | 37 +++++++++++--------- tools/perf/tests/shell/trace+probe_vfs_getname.sh | 2 +- tools/perf/util/llvm-utils.c | 6 ++-- .../util/scripting-engines/trace-event-python.c | 37 +++++++++----------- 14 files changed, 84 insertions(+), 81 deletions(-)
Pulled, thanks a lot Arnaldo!
Ingo