Commit 6f876e75 authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Alexei Starovoitov

selftests/bpf: enhance align selftest's expected log matching

Allow to search for expected register state in all the verifier log
output that's related to specified instruction number.

See added comment for an example of possible situation that is happening
due to a simple enhancement done in the next patch, which fixes handling
of env->test_state_freq flag in state checkpointing logic.
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20230302235015.2044271-4-andrii@kernel.orgSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 567da5d2
...@@ -660,16 +660,22 @@ static int do_test_single(struct bpf_align_test *test) ...@@ -660,16 +660,22 @@ static int do_test_single(struct bpf_align_test *test)
* func#0 @0 * func#0 @0
* 0: R1=ctx(off=0,imm=0) R10=fp0 * 0: R1=ctx(off=0,imm=0) R10=fp0
* 0: (b7) r3 = 2 ; R3_w=2 * 0: (b7) r3 = 2 ; R3_w=2
*
* Sometimes it's actually two lines below, e.g. when
* searching for "6: R3_w=scalar(umax=255,var_off=(0x0; 0xff))":
* from 4 to 6: R0_w=pkt(off=8,r=8,imm=0) R1=ctx(off=0,imm=0) R2_w=pkt(off=0,r=8,imm=0) R3_w=pkt_end(off=0,imm=0) R10=fp0
* 6: R0_w=pkt(off=8,r=8,imm=0) R1=ctx(off=0,imm=0) R2_w=pkt(off=0,r=8,imm=0) R3_w=pkt_end(off=0,imm=0) R10=fp0
* 6: (71) r3 = *(u8 *)(r2 +0) ; R2_w=pkt(off=0,r=8,imm=0) R3_w=scalar(umax=255,var_off=(0x0; 0xff))
*/ */
if (!strstr(line_ptr, m.match)) { while (!strstr(line_ptr, m.match)) {
cur_line = -1; cur_line = -1;
line_ptr = strtok(NULL, "\n"); line_ptr = strtok(NULL, "\n");
sscanf(line_ptr, "%u: ", &cur_line); sscanf(line_ptr ?: "", "%u: ", &cur_line);
if (!line_ptr || cur_line != m.line)
break;
} }
if (cur_line != m.line || !line_ptr || if (cur_line != m.line || !line_ptr || !strstr(line_ptr, m.match)) {
!strstr(line_ptr, m.match)) { printf("Failed to find match %u: %s\n", m.line, m.match);
printf("Failed to find match %u: %s\n",
m.line, m.match);
ret = 1; ret = 1;
printf("%s", bpf_vlog); printf("%s", bpf_vlog);
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment