lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0993/1039] perf script: Fix hex dump character output
    Date
    From: Adrian Hunter <adrian.hunter@intel.com>

    commit 62942e9fda9fd1def10ffcbd5e1c025b3c9eec17 upstream.

    Using grep -C with perf script -D can give erroneous results as grep loses
    lines due to non-printable characters, for example, below the 0020, 0060
    and 0070 lines are missing:

    $ perf script -D | grep -C10 AUX | head
    . 0010: 08 00 00 00 00 00 00 00 1f 00 00 00 00 00 00 00 ................
    . 0030: 01 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 ................
    . 0040: 00 08 00 00 00 00 00 00 02 00 00 00 00 00 00 00 ................
    . 0050: 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................
    . 0080: 02 00 00 00 00 00 00 00 1b 00 00 00 00 00 00 00 ................
    . 0090: 00 00 00 00 00 00 00 00 ........

    0 0 0x450 [0x98]: PERF_RECORD_AUXTRACE_INFO type: 1
    PMU Type 8
    Time Shift 31

    perf's isprint() is a custom implementation from the kernel, but the
    kernel's _ctype appears to include characters from Latin-1 Supplement which
    is not compatible with, for example, UTF-8. Fix by checking also isascii().

    After:

    $ tools/perf/perf script -D | grep -C10 AUX | head
    . 0010: 08 00 00 00 00 00 00 00 1f 00 00 00 00 00 00 00 ................
    . 0020: 03 84 32 2f 00 00 00 00 63 7c 4f d2 fa ff ff ff ..2/....c|O.....
    . 0030: 01 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 ................
    . 0040: 00 08 00 00 00 00 00 00 02 00 00 00 00 00 00 00 ................
    . 0050: 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................
    . 0060: 00 02 00 00 00 00 00 00 00 c0 03 00 00 00 00 00 ................
    . 0070: e2 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 ................
    . 0080: 02 00 00 00 00 00 00 00 1b 00 00 00 00 00 00 00 ................
    . 0090: 00 00 00 00 00 00 00 00 ........

    Fixes: 3052ba56bcb58904 ("tools perf: Move from sane_ctype.h obtained from git to the Linux's original")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lore.kernel.org/lkml/20220112085057.277205-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    tools/perf/util/debug.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/tools/perf/util/debug.c
    +++ b/tools/perf/util/debug.c
    @@ -179,7 +179,7 @@ static int trace_event_printer(enum bina
    break;
    case BINARY_PRINT_CHAR_DATA:
    printed += color_fprintf(fp, color, "%c",
    - isprint(ch) ? ch : '.');
    + isprint(ch) && isascii(ch) ? ch : '.');
    break;
    case BINARY_PRINT_CHAR_PAD:
    printed += color_fprintf(fp, color, " ");

    \
     
     \ /
      Last update: 2022-01-25 00:11    [W:2.504 / U:1.240 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site