Lines Matching full:pattern

29  * The disassembly of each program is then compared with the pattern
45 /* Pattern for BPF_LDX_MEM(field_sz, dst, ctx, field_offset) */
47 /* Pattern for BPF_STX_MEM(field_sz, ctx, src, field_offset) and
51 /* Pattern for BPF_ST_MEM(field_sz, ctx, src, field_offset),
55 /* Pattern for BPF_STX_MEM (field_sz, ctx, src, field_offset),
68 /* Sign extension on s390 changes the pattern */
291 static int find_field_offset(struct btf *btf, char *pattern, regmatch_t *matches) in find_field_offset() argument
295 char *type = pattern + matches[1].rm_so; in find_field_offset()
296 char *field = pattern + matches[2].rm_so; in find_field_offset()
302 PRINT_FAIL("Malformed pattern: type ident is too long: %d\n", type_sz); in find_field_offset()
307 PRINT_FAIL("Malformed pattern: field ident is too long: %d\n", field_sz); in find_field_offset()
386 * Can't match disassembly(left) with pattern(right):
396 char *pattern = pattern_origin; in print_match_error() local
400 fprintf(out, "Can't match disassembly(left) with pattern(right):\n"); in print_match_error()
401 while (*pattern || *text) { in print_match_error()
425 /* Print one line from pattern, pattern lines are terminated by ';' */ in print_match_error()
426 while (*pattern && *pattern != ';') { in print_match_error()
427 if (pattern == pattern_pos) in print_match_error()
429 fputc(*pattern, out); in print_match_error()
430 ++pattern; in print_match_error()
433 if (pattern == pattern_pos) in print_match_error()
437 if (*pattern) in print_match_error()
438 ++pattern; in print_match_error()
442 /* If pattern and text diverge at this line, print an in print_match_error()
458 /* Test if `text` matches `pattern`. Pattern consists of the following elements:
477 * If a substring of pattern is equal to `reg_map[i][0]` the `text` is
480 * - Whitespace is ignored, ';' counts as whitespace for `pattern`.
482 * - Any other characters, `pattern` and `text` should match one-to-one.
484 * Example of a pattern:
492 static bool match_pattern(struct btf *btf, char *pattern, char *text, char *reg_map[][2]) in match_pattern() argument
494 char *pattern_origin = pattern; in match_pattern()
499 while (*pattern) { in match_pattern()
504 if (isspace(*pattern) || *pattern == ';') { in match_pattern()
507 pattern = skip_space_and_semi(pattern); in match_pattern()
516 pattern_next = match_str(pattern, reg_map[i][0]); in match_pattern()
524 pattern = pattern_next; in match_pattern()
532 if (strncmp(pattern, "$(", 2) == 0) { in match_pattern()
533 char *group_start = pattern, *text_next; in match_pattern()
536 pattern += 2; in match_pattern()
541 pattern = skip_space(pattern); in match_pattern()
542 if (!*pattern) { in match_pattern()
543 PRINT_FAIL("Unexpected end of pattern\n"); in match_pattern()
547 if (*pattern == ')') { in match_pattern()
548 ++pattern; in match_pattern()
552 if (*pattern == '+') { in match_pattern()
553 ++pattern; in match_pattern()
557 printf("pattern: %s\n", pattern); in match_pattern()
558 if (regexec(field_regex, pattern, 3, matches, 0) != 0) { in match_pattern()
563 field_offset = find_field_offset(btf, pattern, matches); in match_pattern()
567 pattern += matches[0].rm_eo; in match_pattern()
574 (int)(pattern - group_start), in match_pattern()
585 if (regexec(field_regex, pattern, 3, matches, 0) == 0) { in match_pattern()
589 field_offset = find_field_offset(btf, pattern, matches); in match_pattern()
596 (int)matches[0].rm_eo, pattern, field_offset); in match_pattern()
600 pattern += matches[0].rm_eo; in match_pattern()
605 /* If pattern points to identifier not followed by '::' in match_pattern()
609 if (regexec(ident_regex, pattern, 1, matches, 0) == 0) { in match_pattern()
610 if (strncmp(pattern, text, matches[0].rm_eo) != 0) in match_pattern()
613 pattern += matches[0].rm_eo; in match_pattern()
619 if (*pattern != *text) in match_pattern()
622 ++pattern; in match_pattern()
630 print_match_error(stdout, pattern_origin, text_origin, pattern, text); in match_pattern()
644 char *pattern, in match_program() argument
697 ASSERT_TRUE(match_pattern(btf, pattern, text, reg_map), in match_program()
779 char *pattern = test->write_stx ? test->write_stx : test->write; in run_one_testcase() local
784 match_program(btf, &pinfo, pattern, stx_reg_map, true); in run_one_testcase()
788 char *pattern = test->write_st ? test->write_st : test->write; in run_one_testcase() local
793 match_program(btf, &pinfo, pattern, st_reg_map, false); in run_one_testcase()