perf test: Replace grep perl regexp with awk
authorChun-Tse Shao <ctshao@google.com>
Fri, 20 Jun 2025 17:40:09 +0000 (10:40 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Tue, 24 Jun 2025 17:56:57 +0000 (10:56 -0700)
perl is not universal on all machines and should be replaced with awk,
which is much more common.

Before:
  $ perf test "probe libc's inet_pton & backtrace it with ping" -v
  --- start ---
  test child forked, pid 145431
  grep: Perl matching not supported in a --disable-perl-regexp build

  FAIL: could not add event
  ---- end(-1) ----
  121: probe libc's inet_pton & backtrace it with ping                 : FAILED!
After:
  $ perf test "probe libc's inet_pton & backtrace it with ping" -v
  121: probe libc's inet_pton & backtrace it with ping                 : Ok

Suggested-by: Ian Rogers <irogers@google.com>
Signed-off-by: Chun-Tse Shao <ctshao@google.com>
Reviewed-by: James Clark <james.clark@linaro.org>
Link: https://lore.kernel.org/r/20250620174034.819894-1-ctshao@google.com
[ fold James' suggestion not to escape _ in the event pattern. ]
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/tests/shell/record+probe_libc_inet_pton.sh

index c4bab5b5cc59f0b31c3eb3bb9c63fb7968aa6114..9bdf47aabe9d738bcf1b26317c741bd15a608ec7 100755 (executable)
 libc=$(grep -w libc /proc/self/maps | head -1 | sed -r 's/.*[[:space:]](\/.*)/\1/g')
 nm -Dg $libc 2>/dev/null | grep -F -q inet_pton || exit 254
 
-event_pattern='probe_libc:inet_pton(\_[[:digit:]]+)?'
+event_pattern='probe_libc:inet_pton(_[[:digit:]]+)?'
 
 add_libc_inet_pton_event() {
 
        event_name=$(perf probe -f -x $libc -a inet_pton 2>&1 | tail -n +2 | head -n -5 | \
-                       grep -P -o "$event_pattern(?=[[:space:]]\(on inet_pton in $libc\))")
+                       awk -v ep="$event_pattern" -v l="$libc" '$0 ~ ep && $0 ~ \
+                       ("\\(on inet_pton in " l "\\)") {print $1}')
 
        if [ $? -ne 0 ] || [ -z "$event_name" ] ; then
                printf "FAIL: could not add event\n"