linux/tools/perf
Thomas Richter 7cb1055489 perf test: Fix failure of 'evsel-tp-sched' test on s390
commit 03d309711d upstream.

Commit 489338a717 ("perf tests evsel-tp-sched: Fix bitwise operator")
causes test case 14 "Parse sched tracepoints fields" to fail on s390.

This test succeeds on x86.

In fact this test now fails on all architectures with type char treated
as type unsigned char.

The root cause is the signed-ness of character arrays in the tracepoints
sched_switch for structure members prev_comm and next_comm.

On s390 the output of:

 [root@m35lp76 perf]# cat /sys/kernel/debug/tracing/events/sched/sched_switch/format
 name: sched_switch
 ID: 287
 format:
   field:unsigned short common_type; offset:0; size:2;	signed:0;
   ...
   field:char prev_comm[16]; offset:8; size:16;	signed:0;
   ...
   field:char next_comm[16]; offset:40; size:16; signed:0;

reveals the character arrays prev_comm and next_comm are per
default unsigned char and have values in the range of 0..255.

On x86 both fields are signed as this output shows:
 [root@f29]# cat /sys/kernel/debug/tracing/events/sched/sched_switch/format
 name: sched_switch
 ID: 287
 format:
   field:unsigned short common_type; offset:0; size:2;	signed:0;
   ...
   field:char prev_comm[16]; offset:8; size:16;	signed:1;
   ...
   field:char next_comm[16]; offset:40; size:16; signed:1;

and the character arrays prev_comm and next_comm are per default signed
char and have values in the range of -1..127.  The implementation of
type char is architecture specific.

Since the character arrays in both tracepoints sched_switch and
sched_wakeup should contain ascii characters, simply omit the check for
signedness in the test case.

Output before:

  [root@m35lp76 perf]# ./perf test -F 14
  14: Parse sched tracepoints fields                        :
  --- start ---
  sched:sched_switch: "prev_comm" signedness(0) is wrong, should be 1
  sched:sched_switch: "next_comm" signedness(0) is wrong, should be 1
  sched:sched_wakeup: "comm" signedness(0) is wrong, should be 1
  ---- end ----
  14: Parse sched tracepoints fields                        : FAILED!
  [root@m35lp76 perf]#

Output after:

  [root@m35lp76 perf]# ./perf test -Fv 14
  14: Parse sched tracepoints fields                        :
  --- start ---
  ---- end ----
  Parse sched tracepoints fields: Ok
  [root@m35lp76 perf]#

Fixes: 489338a717 ("perf tests evsel-tp-sched: Fix bitwise operator")

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Link: http://lkml.kernel.org/r/20190219153639.31267-1-tmricht@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2019-05-02 21:41:37 +01:00
..
arch perf tools: Add libdw DWARF post unwind support for ARM 2014-05-16 11:39:29 +02:00
bench Merge branch 'perf-core-for-mingo' into perf/urgent 2014-04-14 16:45:39 +02:00
config perf tools: Move syscall number fallbacks from perf-sys.h to tools/arch/x86/include/asm/ 2018-11-20 18:06:03 +00:00
Documentation perf top: Document --ignore-vmlinux 2018-10-21 08:44:55 +01:00
python perf python: Remove duplicate TID bit from mask 2013-08-07 17:35:25 -03:00
scripts perf tools: Finish the removal of 'self' arguments 2013-11-05 15:32:36 -03:00
tests perf test: Fix failure of 'evsel-tp-sched' test on s390 2019-05-02 21:41:37 +01:00
ui perf ui helpline: Use strlcpy() as a shorter form of strncpy() + explicit set nul 2019-04-04 16:13:52 +01:00
util perf parse-events: Fix unchecked usage of strncpy() 2019-04-04 16:13:52 +01:00
.gitignore perf tools: Ignore 'perf timechart' output file 2013-10-11 12:17:37 -03:00
builtin-annotate.c perf hists: Check if accumulated when adding a hist entry 2014-06-01 14:34:56 +02:00
builtin-bench.c perf bench: Fix segfault at the end of an 'all' execution 2014-04-14 12:55:53 +02:00
builtin-buildid-cache.c perf buildid-cache: Check relocation when checking for existing kcore 2014-01-31 17:21:54 -03:00
builtin-buildid-list.c perf session: Separating data file properties from session 2013-10-21 17:33:25 -03:00
builtin-diff.c perf hists: Check if accumulated when adding a hist entry 2014-06-01 14:34:56 +02:00
builtin-evlist.c perf evlist: Introduce evlist__for_each() & friends 2014-01-13 10:06:25 -03:00
builtin-help.c perf help: Remove needless use of strncpy() 2019-04-04 16:13:51 +01:00
builtin-inject.c perf inject: Don't proceed if perf_session__process_event() fails 2017-08-26 02:14:30 +01:00
builtin-kmem.c perf tools: Use tid for finding thread 2014-05-12 11:09:50 +02:00
builtin-kvm.c perf kvm: Fix 'Min time' counting in report command 2014-04-20 00:14:08 +02:00
builtin-list.c perf list: Add usage 2013-11-05 14:26:41 -03:00
builtin-lock.c perf lock: Introduce --list-cmds for use by scripts 2014-04-16 17:16:04 +02:00
builtin-mem.c perf mem: Introduce --list-cmds for use by scripts 2014-04-16 17:16:04 +02:00
builtin-probe.c perf probe: Show error code and description in verbose mode 2014-06-09 14:34:09 -03:00
builtin-record.c perf record: Put new line after target override warning 2018-10-21 08:44:48 +01:00
builtin-report.c perf tools: Add callback function to hist_entry_iter 2014-06-01 14:35:05 +02:00
builtin-sched.c perf tools: Introduce hists__inc_nr_samples() 2014-06-01 14:34:55 +02:00
builtin-script.c perf tools: Fix snprint warnings for gcc 8 2018-11-20 18:06:05 +00:00
builtin-stat.c perf stat: Get correct cpu id for print_aggr 2015-09-30 13:20:46 +01:00
builtin-timechart.c perf symbols: Record the reason for filtering an address_location 2014-03-18 18:16:57 -03:00
builtin-top.c perf top: Use __fallthrough 2018-11-20 18:06:05 +00:00
builtin-trace.c perf trace: Do not process PERF_RECORD_LOST twice 2018-11-20 18:06:06 +00:00
builtin.h perf tools: Add new mem command for memory access profiling 2013-04-01 12:21:44 -03:00
command-list.txt perf tools: Add new mem command for memory access profiling 2013-04-01 12:21:44 -03:00
CREDITS perf_counter tools: Add CREDITS file for Git contributors 2009-06-24 19:54:29 +02:00
design.txt perf tools: Update some code references in design.txt 2014-03-18 18:17:06 -03:00
Makefile perf tools: Add 'build-test' make target 2014-01-16 16:26:26 -03:00
Makefile.perf perf tools: Move syscall number fallbacks from perf-sys.h to tools/arch/x86/include/asm/ 2018-11-20 18:06:03 +00:00
MANIFEST tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
perf-archive.sh perf archive: Make 'f' the last parameter for tar 2012-09-17 13:10:42 -03:00
perf-completion.sh perf sched: Introduce --list-cmds for use by scripts 2014-04-16 17:16:05 +02:00
perf-sys.h perf tools: Move syscall number fallbacks from perf-sys.h to tools/arch/x86/include/asm/ 2018-11-20 18:06:03 +00:00
perf.c perf tools: Add support to dynamically get cacheline size 2014-06-09 13:34:48 +02:00
perf.h perf tools: Move ACCESS_ONCE from perf.h header 2014-05-05 17:49:07 +02:00