• Quentin Deslandes's avatar
    libbpf: Fix dump of subsequent char arrays · e739e01d
    Quentin Deslandes authored
    When dumping a character array, libbpf will watch for a '\0' and set
    is_array_terminated=true if found. This prevents libbpf from printing
    the remaining characters of the array, treating it as a nul-terminated
    string.
    
    However, once this flag is set, it's never reset, leading to subsequent
    characters array not being printed properly:
    
    .str_multi = (__u8[2][16])[
        [
            'H',
            'e',
            'l',
        ],
    ],
    
    This patch saves the is_array_terminated flag and restores its
    default (false) value before looping over the elements of an array,
    then restores it afterward. This way, libbpf's behavior is unchanged
    when dumping the characters of an array, but subsequent arrays are
    printed properly:
    
    .str_multi = (__u8[2][16])[
        [
            'H',
            'e',
            'l',
        ],
        [
            'l',
            'o',
        ],
    ],
    Signed-off-by: default avatarQuentin Deslandes <qde@naccy.de>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20240413211258.134421-3-qde@naccy.de
    e739e01d
btf_dump.c 68.9 KB