]> www.infradead.org Git - users/jedix/linux-maple.git/commit
perf/test: perf test 86 fails on s390
authorThomas Richter <tmricht@linux.ibm.com>
Tue, 1 Oct 2024 12:42:23 +0000 (14:42 +0200)
committerNamhyung Kim <namhyung@kernel.org>
Wed, 2 Oct 2024 21:58:04 +0000 (14:58 -0700)
commit5873de90315a13d211b1d50a1ba97f21a6f17516
treebfebb246b84f252cd97fd0d8c84cb81c1b84f8f4
parent90035d3cd876cb71f98868d44ee60f5c5aa5ad69
perf/test: perf test 86 fails on s390

Command perf test 86 fails on s390:
 # perf test -F 86
 ping 868299 [007] 28248.013596: probe_libc:inet_pton_1: (3ff95948020)
 3ff95948020 inet_pton+0x0 (inlined)
 3ff9595e6e7 text_to_binary_address+0x1007 (inlined)
 3ff9595e6e7 gaih_inet+0x1007 (inlined)
 FAIL: expected backtrace entry \
 "main\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$"
 got "3ff9595e6e7 gaih_inet+0x1007 (inlined)"
 86: probe libc's inet_pton & backtrace it with ping  : FAILED!
 #

The root cause is a new stack layout, two functions have been added
as seen below.

 # perf script | tac | grep -m1 '^ping' -B9 | tac
 ping  866856 [007] 25979.494921: probe_libc:inet_pton: (3ff8ec48020)
     3ff8ec48020 inet_pton+0x0 (inlined)
 new -->     3ff8ec5e6e7 text_to_binary_address+0x1007 (inlined)
 new -->     3ff8ec5e6e7 gaih_inet+0x1007 (inlined)
     3ff8ec5e6e7 getaddrinfo+0x1007 (/usr/lib64/libc.so.6)
     2aa3fe04bf5 main+0xff5 (/usr/bin/ping)
     3ff8eb34a5b __libc_start_call_main+0x8b (/usr/lib64/libc.so.6)
     3ff8eb34b5d __libc_start_main@GLIBC_2.2+0xad (inlined)
     2aa3fe06a1f [unknown] (/usr/bin/ping)

 #

The new functions in the call chain are:
 - text_to_binary_address()
 - gaih_inet().

Both functions are inlined and do not show up in the output
of the nm command:

  # nm -a /usr/lib64/libc.so.6 | \
grep -E '(text_to_binary_address|gaih_inet)$'
  #

There is no possibility to add these 2 functions depending on their
existance in the C library.

Add text_to_binary_address() and gaih_inet() to the list of
expected functions in an compatible way and extend the regular
expression. On s390 the backtrace can now be

   Before                   After
   probe_libc:inet_pton     probe_libc:inet_pton
   inet_pton     inet_pton
   getaddrinfo     getaddrinfo | text_to_binary_address
   main     main | gaih_inet

Output after:
 # perf test -F 86
 86: probe libc's inet_pton & backtrace it with ping  : Ok
 #

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Cc: agordeev@linux.ibm.com
Cc: gor@linux.ibm.com
Cc: hca@linux.ibm.com
Cc: sumanthk@linux.ibm.com
Link: https://lore.kernel.org/r/20241001124224.3370306-1-tmricht@linux.ibm.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/tests/shell/record+probe_libc_inet_pton.sh