-KERNEL_FILTER_COUNT=${#KERNEL_FILTERS[@]}
-
-KERNEL_VALIDATOR=("validator_intfield" #1
- "validator_intfield_gt" #2
- "validator_intfield_ge" #3
- "validator_intfield_lt" #4
- "validator_intfield_le" #5
- "validator_intfield_eq" #6
- "validator_intfield_ne" #7
- "validator_intfield_not" #8
- "validator_intfield" #9
- "validator_intfield" #10
- "validator_intfield" #11
- "validator_intfield" #12
- "validator_intfield_gt_and_longfield_gt" #13
- "validator_intfield_ge_and_longfield_le" #14
- "validator_intfield_lt_or_longfield_gt" #15
- "validator_mixed_str_or_int_and_int" #16
- "validator_has_no_event" #17 #Unsupported by kernel
- "validator_true_statement" #18
- "validator_true_statement" #19
- "validator_true_statement" #20
- "validator_true_statement" #21
- "validator_intfield" #22
- "validator_true_statement" #23
- "validator_intfield_lt" #24
- "validator_intfield_lt" #25
- "validator_true_statement" #26
- "validator_has_no_event" #27 #Unsupported by kernel
- "validator_intfield_gt" #28
- "validator_has_no_event" #29
- "validator_has_events" #30
- "validator_has_no_event" #31
- "validator_has_events" #32
- "validator_has_no_event" #33
- "validator_has_events" #34
- "validator_has_no_event" #35
- "validator_has_events" #36
- "validator_has_no_event" #36
- "validator_has_events" #37
- "validator_has_no_event" #38
- "validator_has_events" #39
- "validator_has_no_event" #41
- "validator_has_events" #42
- "validator_has_no_event" #43
- "validator_has_events" #44
- "validator_has_no_event" #45
- "validator_has_events" #46
- "validator_has_no_event" #47
- "validator_has_events" #48
- "validator_has_no_event" #49
- "validator_has_no_event" #50
- "validator_has_no_event" #51
- "validator_has_no_event" #52
- "validator_has_no_event" #53
- "validator_has_no_event" #54
- "validator_has_no_event" #55
+ true_statement
+ "-1==~0"
+
+ true_statement # unsigned bitwise ops
+ "~0>>4==0x0fffffffffffffff"
+
+ has_no_event
+ "1<<-1"
+
+ has_no_event
+ "1<<10000"
+
+ true_statement # comparator is signed, shift is unsigned
+ "(1<<63) < 0"
+
+ true_statement
+ "(1<<2!=4)==0" # operator priority: shift before equality
+
+ true_statement
+ "1&3==1" # operator priority: masks before equality
+
+ true_statement
+ "(3|1==3)==1" # operator priority: masks before equality
+
+ true_statement
+ "(2^1==3)==1" # operator priority: masks before equality
+
+ true_statement
+ "(1 << 32) == 4294967296"
+
+ true_statement
+ "(1 << 63) == 9223372036854775808"
+
+ true_statement
+ "(arrfield1[2] & 1) == 1"
+
+ true_statement
+ "(arrfield1[2] | 0x111000) == 0x111003"
+
+ true_statement
+ "(arrfield1[0] | arrfield1[1] | arrfield1[2]) == 0x3"
+
+ true_statement
+ "(seqfield4[2] & 1) == 1"
+
+ true_statement
+ "(seqfield4[2] | 0x111000) == 0x111003"
+
+ true_statement
+ "intfield < 0xDEADBEEF"
+
+ intfield_lt
+ "intfield < 0x2"
+
+ intfield_lt
+ "intfield < 02"
+
+ true_statement
+ "stringfield2 == \"\\\*\""
+
+ has_no_event
+ "1.0 || intfield || 1.0"
+
+ intfield_gt
+ "1 < intfield"
+
+ has_no_event
+ "\$ctx.vtid == 0"
+
+ has_events
+ "\$ctx.vtid != 0"
+
+ has_no_event
+ "0 == \$ctx.vtid"
+
+ has_events
+ "0 != \$ctx.vtid"
+
+ has_no_event
+ "\$ctx.vpid == 0"
+
+ has_events
+ "\$ctx.vpid != 0"
+
+ has_no_event
+ "0 == \$ctx.vpid"
+
+ has_events
+ "0 != \$ctx.vpid"
+
+ has_no_event
+ "\$ctx.procname != \"$BIN_NAME\""
+
+ has_events
+ "\$ctx.procname == \"$BIN_NAME\""
+
+ has_no_event
+ "\"$BIN_NAME\" != \$ctx.procname"
+
+ has_events
+ "\"$BIN_NAME\" == \$ctx.procname"
+
+ has_no_event
+ "\$ctx.procname != \"$BIN_NAME*\""
+
+ has_events
+ "\$ctx.procname == \"$BIN_NAME*\""
+
+ has_no_event
+ "\"$BIN_NAME*\" != \$ctx.procname"
+
+ has_events
+ "\"$BIN_NAME*\" == \$ctx.procname"
+
+ has_no_event
+ "\$ctx.procname != \"*\""
+
+ has_events
+ "\$ctx.procname == \"*\""
+
+ has_no_event
+ "\"*\" != \$ctx.procname"
+
+ has_events
+ "\"*\" == \$ctx.procname"
+
+ has_no_event
+ "!a.f.d"
+
+ has_no_event
+ "a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a"
+
+ has_no_event
+ "\$ctx.vtid.blah == 0"
+
+ has_no_event
+ "asdf.asdfsd.sadf < 4"
+
+ has_no_event
+ "0 == \$ctx.vtid.blah"
+
+ stringfield_has_events
+ 'stringfield == "test"'
+
+ stringfield_has_events
+ '"test" == stringfield'
+
+ has_no_event
+ 'stringfield != "test"'
+
+ has_no_event
+ '"test" != stringfield'
+
+ stringfield_has_events
+ 'stringfield == "*st"'
+
+ stringfield_has_events
+ '"*st" == stringfield'
+
+ has_no_event
+ 'stringfield != "*st"'
+
+ has_no_event
+ '"*st" != stringfield'
+
+ stringfield_has_events
+ 'stringfield == "te*"'
+
+ stringfield_has_events
+ '"te*" == stringfield'
+
+ has_no_event
+ 'stringfield != "te*"'
+
+ has_no_event
+ '"te*" != stringfield'
+
+ stringfield_has_events
+ 'stringfield == "te*t"'
+
+ stringfield_has_events
+ '"te*t" == stringfield'
+
+ has_no_event
+ 'stringfield != "te*t"'
+
+ has_no_event
+ '"te*t" != stringfield'
+
+ stringfield_has_events
+ 'stringfield == "tes*t"'
+
+ stringfield_has_events
+ '"tes*t" == stringfield'
+
+ has_no_event
+ 'stringfield != "tes*t"'
+
+ has_no_event
+ '"tes*t" != stringfield'
+
+ stringfield_has_events
+ 'stringfield == "*test"'
+
+ stringfield_has_events
+ '"*test" == stringfield'
+
+ has_no_event
+ 'stringfield != "*test"'
+
+ has_no_event
+ '"*test" != stringfield'
+
+ stringfield_has_events
+ 'stringfield == "test*"'
+
+ stringfield_has_events
+ '"test*" == stringfield'
+
+ has_no_event
+ 'stringfield != "test*"'
+
+ has_no_event
+ '"test*" != stringfield'
+
+ stringfield_has_events
+ 'stringfield == "*"'
+
+ stringfield_has_events
+ '"*" == stringfield'
+
+ has_no_event
+ 'stringfield != "*"'
+
+ has_no_event
+ '"*" != stringfield'
+
+ has_no_event
+ 'stringfield == "test*2"'
+
+ has_no_event
+ 'stringfield == "2*test"'
+
+ has_no_event
+ 'stringfield == "te\*st"'
+
+ has_no_event
+ 'stringfield == "te*ts"'
+
+ has_no_event
+ 'stringfield == "*\*test"'
+
+ has_no_event
+ 'stringfield == "test\*"'
+
+ ${KIRK_KRAUSS_TESTS[@]}
+
+ END