• Eduard Zingerman's avatar
    selftests/bpf: replace __regex macro with "{{...}}" patterns · f8d16175
    Eduard Zingerman authored
    Upcoming changes require a notation to specify regular expression
    matches for regular verifier log messages, disassembly of BPF
    instructions, disassembly of jited instructions.
    
    Neither basic nor extended POSIX regular expressions w/o additional
    escaping are good for this role because of wide use of special
    characters in disassembly, for example:
    
        movq -0x10(%rbp), %rax  ;; () are special characters
        cmpq $0x21, %rax        ;; $ is a special character
    
        *(u64 *)(r10 -16) = r1  ;; * and () are special characters
    
    This commit borrows syntax from LLVM's FileCheck utility.
    It replaces __regex macro with ability to embed regular expressions
    in __msg patters using "{{" "}}" pairs for escaping.
    Syntax for __msg patterns:
    
        pattern := (<verbatim text> | regex)*
        regex := "{{" <posix extended regular expression> "}}"
    
    For example, pattern "foo{{[0-9]+}}" matches strings like
    "foo0", "foo007", etc.
    Signed-off-by: default avatarEduard Zingerman <eddyz87@gmail.com>
    Link: https://lore.kernel.org/r/20240820102357.3372779-5-eddyz87@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    f8d16175
dynptr_fail.c 35.8 KB