Skip to content

Commit 75a16c7

Browse files
committed
goto_programt::output_instruction now uses format(...)
Goto programs are intended as an internal representation that is independent of the specific input programming langauge. This commit switches the debug output for the instructions of goto programs to format(...), which is also designed to be language independent.
1 parent d5c9ef8 commit 75a16c7

File tree

174 files changed

+696
-665
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

174 files changed

+696
-665
lines changed

jbmc/regression/janalyzer/string-initializer/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Basic1
33
--location-sensitive --constants --show
44
^EXIT=0$
55
^SIGNAL=0$
6-
Hello_20 = \{ \.@class_identifier="java::java\.lang\.String" \};
6+
Hello_20 := \{ "java::java\.lang\.String" \}
77
java::java\.lang\.String\.Literal\.Hello_20=\{ \.@class_identifier="java::java\.lang\.String" \}
88
--
99
^warning: ignoring

jbmc/regression/jbmc/JumpSimplification/test.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Test
44
activate-multi-line-match
55
^EXIT=0$
66
^SIGNAL=0$
7-
IF \w* <= 0 THEN GOTO 1\n\s*//.*\n\s*//.*\n\s*\w*::
7+
IF .* ≤ 0 THEN GOTO 1\n\s*//.*\n\s*//.*\n\s*ASSIGN
88
--
9-
IF !\(\w* <= 0\) THEN GOTO 1\n\s*//.*\n.*GOTO 2\n\s*//.*\n\s*//.*\n\s*1: \w*::
9+
IF ¬\(.* ≤ 0\) THEN GOTO 1\n\s*//.*\n.*GOTO 2\n\s*//.*\n\s*//.*\n\s*1: \w*::
1010
^warning: ignoring
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
CORE
22
test
33
--show-goto-functions --function test.main
4-
dead anonlocal::1i
5-
dead anonlocal::2i
6-
dead anonlocal::3a
7-
dead new_tmp[0-9]+
4+
DEAD .*::anonlocal::1i
5+
DEAD .*::anonlocal::2i
6+
DEAD .*::anonlocal::3a
7+
DEAD .*::new_tmp[0-9]+
88
^EXIT=0$
99
^SIGNAL=0$
1010
--

jbmc/regression/jbmc/clinit-lifting2/test-goto-functions.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Test
44
activate-multi-line-match
55
^EXIT=0$
66
^SIGNAL=0$
7-
\s*// 0 no location\n\s*Other\.<clinit_wrapper>\(\);\s*// 1 no location\s*int total;
7+
\s*// 0 no location\n\s*CALL java::Other\.<clinit_wrapper>\(\)\s*// 1 no location\s*DECL .*::total
88
--
99
--
1010
This checks that the clinit-wrapper function is called once, even though there are two calls in the source

jbmc/regression/jbmc/clinit-lifting3/test-goto-functions.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Test
44
activate-multi-line-match
55
^EXIT=0$
66
^SIGNAL=0$
7-
\s*// 0 no location\n\s*Other\.<clinit_wrapper>\(\);\s*// 1 no location\s*Third\.<clinit_wrapper>\(\);\s*// 2 no location\s*int total;
7+
\s*// 0 no location\n\s*CALL java::Other\.<clinit_wrapper>\(\)\s*// 1 no location\s*CALL java::Third\.<clinit_wrapper>\(\)\s*// 2 no location\s*DECL .*::total
88
--
99
--
1010
This checks that the clinit-wrapper function is called once, even though there are two calls in the source

jbmc/regression/jbmc/destructor1/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ Break
33
--show-goto-functions --function Break.main
44
^EXIT=0$
55
^SIGNAL=0$
6-
dead i;
6+
DEAD .*::i
77
--
88
GOTO 11

jbmc/regression/jbmc/destructors/block.desc

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ CORE
22
DestructorStackTests
33
--show-goto-functions --function DestructorStackTests.mainTest --unwind 10
44
activate-multi-line-match
5-
[0-9]+: dead strings;[\s]*(?P<comment_block>(\/\/ [0-9]+ file DestructorStackTests\.java line 42 function java::DestructorStackTests\.mainTest:\(Z\)V bytecode-index 90)|(\/\/ [0-9]+ no location))[\s]*dead minor1;[\s]*(?P>comment_block)[\s]*dead anonlocal::[0-9a-zA-Z]+;[\s]*(?P>comment_block)[\s]*[0-9]+: END_FUNCTION
5+
[0-9]+: DEAD .*::strings[\s]*(?P<comment_block>(\/\/ [0-9]+ file DestructorStackTests\.java line 42 function java::DestructorStackTests\.mainTest:\(Z\)V bytecode-index 90)|(\/\/ [0-9]+ no location))[\s]*DEAD .*::minor1[\s]*(?P>comment_block)[\s]*DEAD .*::anonlocal::[0-9a-zA-Z]+[\s]*(?P>comment_block)[\s]*[0-9]+: END_FUNCTION
66
^EXIT=0$
77
^SIGNAL=0$
88
--
99
--
1010
Checks for:
1111

1212
// Labels: pc187
13-
12: dead strings;
13+
12: DEAD strings
1414
// 250 file DestructorStackTests.java line 42 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 90
15-
dead minor1;
15+
DEAD minor1
1616
// 251 file DestructorStackTests.java line 42 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 90
17-
dead anonlocal::4a;
17+
DEAD anonlocal::4a
1818
// 252 no location
1919
13: END_FUNCTION
2020

jbmc/regression/jbmc/destructors/break.desc

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ CORE
22
DestructorStackTests
33
--show-goto-functions --function DestructorStackTests.mainTest --unwind 10
44
activate-multi-line-match
5-
(?P<comment_block>\/\/ [0-9]+ file DestructorStackTests\.java line 34 function java::DestructorStackTests\.mainTest:\(Z\)V bytecode-index 84)[\s]*dead throwaway;[\s]*(?P>comment_block)[\s]*dead new_tmp[0-9]+;[\s]*(?P>comment_block)[\s]*dead val;[\s]*(?P>comment_block)[\s]*GOTO [0-9]+
5+
(?P<comment_block>\/\/ [0-9]+ file DestructorStackTests\.java line 34 function java::DestructorStackTests\.mainTest:\(Z\)V bytecode-index 84)[\s]*DEAD .*::throwaway[\s]*(?P>comment_block)[\s]*DEAD .*::new_tmp[0-9]+[\s]*(?P>comment_block)[\s]*DEAD .*::val[\s]*(?P>comment_block)[\s]*GOTO [0-9]+
66
^EXIT=0$
77
^SIGNAL=0$
88
--
99
--
1010
Checks for:
1111

1212
// 228 file DestructorStackTests.java line 34 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 84
13-
dead throwaway;
13+
DEAD throwaway
1414
// 229 file DestructorStackTests.java line 34 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 84
15-
dead new_tmp16;
15+
DEAD new_tmp16
1616
// 230 file DestructorStackTests.java line 34 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 84
17-
dead val;
17+
DEAD val
1818
// 231 file DestructorStackTests.java line 34 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 84
1919
GOTO 12
2020

jbmc/regression/jbmc/destructors/continue.desc

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ CORE
22
DestructorStackTests
33
--show-goto-functions --function DestructorStackTests.mainTest --unwind 10
44
activate-multi-line-match
5-
(?P<comment_block>\/\/ [0-9]+ file DestructorStackTests\.java line 39 function java::DestructorStackTests\.mainTest:\(Z\)V bytecode-index 89)[\s]*dead throwaway;[\s]*(?P>comment_block)[\s]*dead new_tmp[0-9]+;[\s]*(?P>comment_block)[\s]*dead val;[\s]*(?P>comment_block)[\s]*GOTO [0-9]+
5+
(?P<comment_block>\/\/ [0-9]+ file DestructorStackTests\.java line 39 function java::DestructorStackTests\.mainTest:\(Z\)V bytecode-index 89)[\s]*DEAD .*::throwaway[\s]*(?P>comment_block)[\s]*DEAD .*::new_tmp[0-9]+[\s]*(?P>comment_block)[\s]*DEAD .*::val[\s]*(?P>comment_block)[\s]*GOTO [0-9]+
66
^EXIT=0$
77
^SIGNAL=0$
88
--
99
--
1010
Checks for:
1111

1212
// 242 file DestructorStackTests.java line 39 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 89
13-
dead throwaway;
13+
DEAD throwaway
1414
// 243 file DestructorStackTests.java line 39 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 89
15-
dead new_tmp17;
15+
DEAD new_tmp17
1616
// 244 file DestructorStackTests.java line 39 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 89
17-
dead val;
17+
DEAD val
1818
// 245 file DestructorStackTests.java line 39 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 89
1919
GOTO 3
2020

jbmc/regression/jbmc/destructors/decl.desc

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@ CORE
22
DestructorStackTests
33
--show-goto-functions --function DestructorStackTests.mainTest --unwind 10
44
activate-multi-line-match
5-
IF !\(\(int\)unknown == 0\) THEN GOTO [0-9]+[\s]*(?P<comment_block>\/\/ [0-9]+ file DestructorStackTests\.java line 24 function java::DestructorStackTests\.mainTest:\(Z\)V bytecode-index 50)[\s]*dead new_tmp[0-9]+;[\s]*(?P>comment_block)[\s]*GOTO [0-9]+[\s]*\/\/ [0-9]+ no location[\s]*[0-9]+: dead new_tmp[0-9]+;[\s]*
5+
IF ¬\(.*unknown.* = 0\) THEN GOTO [0-9]+[\s]*(?P<comment_block>\/\/ [0-9]+ file DestructorStackTests\.java line 24 function java::DestructorStackTests\.mainTest:\(Z\)V bytecode-index 50)[\s]*DEAD .*::new_tmp[0-9]+[\s]*(?P>comment_block)[\s]*GOTO [0-9]+[\s]*\/\/ [0-9]+ no location[\s]*[0-9]+: DEAD .*::new_tmp[0-9]+[\s]*
66
^EXIT=0$
77
^SIGNAL=0$
88
--
99
--
1010
Checks for:
1111

12-
IF !((int)unknown == 0) THEN GOTO 1
12+
IF ¬(cast(java::DestructorStackTests.mainTest:(Z)V::unknown, signedbv[32]) = 0) THEN GOTO 1
1313
// 44 file DestructorStackTests.java line 24 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 50
14-
dead new_tmp0;
14+
DEAD java::DestructorStackTests.mainTest:(Z)V::new_tmp0
1515
// 45 file DestructorStackTests.java line 24 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 50
1616
GOTO 2
1717
// 46 no location
18-
1: dead new_tmp0;
18+
1: DEAD java::DestructorStackTests.mainTest:(Z)V::new_tmp0
1919

2020
Tests to make sure a declaration kills its temp variable before continuing.
2121
Numbers vary between symex load / normal load.

jbmc/regression/jbmc/destructors/return.desc

+9-9
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,29 @@ CORE
22
DestructorStackTests
33
--show-goto-functions --function DestructorStackTests.mainTest --unwind 10
44
activate-multi-line-match
5-
(?<comment_block>\/\/ [0-9]+ file DestructorStackTests\.java line 18 function java::DestructorStackTests.mainTest:\(Z\)V bytecode-index 40)[\s]*dead minor[0-9]+;[\s]*(?P>comment_block)[\s]*dead new_tmp[0-9]+;[\s]*(?P>comment_block)[\s]*dead anonlocal::[0-9a-zA-Z]+;[\s]*(?P>comment_block)[\s]*dead new_tmp[0-9]+;[\s]*(?P>comment_block)[\s]*dead ex;[\s]*(?P>comment_block)[\s]*dead minor2;[\s]*(?P>comment_block)[\s]*dead minor1;[\s]*(?P>comment_block)[\s]*dead anonlocal::[0-9a-zA-Z]+;[\s]*(?P>comment_block)[\s]*GOTO [0-9]+
5+
(?<comment_block>\/\/ [0-9]+ file DestructorStackTests\.java line 18 function java::DestructorStackTests.mainTest:\(Z\)V bytecode-index 40)[\s]*DEAD .*::minor[0-9]+[\s]*(?P>comment_block)[\s]*DEAD .*::new_tmp[0-9]+[\s]*(?P>comment_block)[\s]*DEAD .*anonlocal::[0-9a-zA-Z]+[\s]*(?P>comment_block)[\s]*DEAD .*::new_tmp[0-9]+[\s]*(?P>comment_block)[\s]*DEAD .*::ex[\s]*(?P>comment_block)[\s]*DEAD .*::minor2[\s]*(?P>comment_block)[\s]*DEAD .*::minor1[\s]*(?P>comment_block)[\s]*DEAD .*::anonlocal::[0-9a-zA-Z]+[\s]*(?P>comment_block)[\s]*GOTO [0-9]+
66
^EXIT=0$
77
^SIGNAL=0$
88
--
99
--
1010
Checks for:
1111

1212
// 98 file DestructorStackTests.java line 18 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 40
13-
dead minor5;
13+
DEAD minor5
1414
// 99 file DestructorStackTests.java line 18 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 40
15-
dead new_tmp6;
15+
DEAD new_tmp6
1616
// 100 file DestructorStackTests.java line 18 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 40
17-
dead anonlocal::6a;
17+
DEAD anonlocal::6a
1818
// 101 file DestructorStackTests.java line 18 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 40
19-
dead new_tmp5;
19+
DEAD new_tmp5
2020
// 102 file DestructorStackTests.java line 18 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 40
21-
dead ex;
21+
DEAD ex
2222
// 103 file DestructorStackTests.java line 18 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 40
23-
dead minor2;
23+
DEAD minor2
2424
// 104 file DestructorStackTests.java line 18 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 40
25-
dead minor1;
25+
DEAD minor1
2626
// 105 file DestructorStackTests.java line 18 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 40
27-
dead anonlocal::4a;
27+
DEAD anonlocal::4a
2828
// 106 file DestructorStackTests.java line 18 function java::DestructorStackTests.mainTest:(Z)V bytecode-index 40
2929
GOTO 13
3030

jbmc/regression/jbmc/generic_base_type/check_casts.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ Test
33
--function Test.main --show-goto-functions
44
^EXIT=0$
55
^SIGNAL=0$
6-
this \. Test\.callee:\(LBase;\)V\(\(struct Base \*\)&return_tmp0->@Base\);
7-
this \. Test\.callee2:\(LBase;\)V\(&return_tmp1->@Base\);
6+
CALL java::Test\.callee:\(LBase;\)V\(.*::this, cast\(address_of\(\*java::Test\.main:\(Z\)V::return_tmp0\.@Base\), struct java::Base\*\)\)
7+
CALL java::Test\.callee2:\(LBase;\)V\(.*::this, address_of\(\*java::Test\.main:\(Z\)V::return_tmp1\.@Base\)\)
88
--
99
callee has a qualified Base type, and so requires a cast.
1010
callee2 has the unqualified type that Test<T> naturally inherits, so no cast is required.

jbmc/regression/jbmc/generic_function_parameter/callee2_with_cast.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Test
33
--function Test.main2 --show-goto-functions
44
^EXIT=0$
55
^SIGNAL=0$
6-
this \. Test.callee2:\(LTest;\)V\(\(struct Test \*\)param\);
6+
java::Test.callee2:\(LTest;\)V\(.*::this, cast\(java::Test\.main2:\(LTest;\)V::param, struct java::Test\*\)\)
77
--
88
--
99
Test and callee2 have differing parameter types, so there should be a cast at the callsite.

jbmc/regression/jbmc/generic_function_parameter/callee_without_cast.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Test
33
--function Test.main --show-goto-functions
44
^EXIT=0$
55
^SIGNAL=0$
6-
this \. Test.callee:\(LTest;\)V\(param\);
6+
Test.callee:\(LTest;\)V\(.*::this, .*::param\)
77
--
88
--
99
Test and callee have matching parameter types, so there should be no cast at the callsite.

jbmc/regression/jbmc/generic_static_field/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Test
33
--function Test.test --validate-goto-model --show-goto-functions
44
^EXIT=0$
55
^SIGNAL=0$
6-
Test\.test:\(\)LTest;#return_value = static_field;
6+
ASSIGN java::Test\.test:\(\)LTest;#return_value := java::Test\.static_field$
77
--
88
^warning: ignoring
99
--

jbmc/regression/jbmc/generic_virtual_function/check_casts.desc

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ Base
33
--function Base.main --show-goto-functions
44
^EXIT=0$
55
^SIGNAL=0$
6-
\(struct Impl1 \*\)b \. Impl1\.f:\(Ljava/lang/Object;\)V\(\(struct java\.lang\.Object \*\)this->genericData\);
7-
\(struct Impl2 \*\)b \. Impl2\.f:\(Ljava/lang/Object;\)V\(\(struct java\.lang\.Object \*\)this->genericData\);
8-
\(struct Impl2 \*\)b \. Impl2\.g:\(Ljava/lang/String;\)V\(this->nonGenericData\);
9-
\(struct Impl1 \*\)b \. Impl1\.g:\(Ljava/lang/String;\)V\(this->nonGenericData\);
6+
CALL java::Impl1\.f:\(Ljava/lang/Object;\)V\(cast\(.*::b, struct java::Impl1\*\), cast\(\*.*\.genericData, struct java::java\.lang\.Object\*\)\)
7+
CALL java::Impl2\.f:\(Ljava/lang/Object;\)V\(cast\(.*::b, struct java::Impl2\*\), cast\(\*.*\.genericData, struct java::java\.lang\.Object\*\)\)
8+
CALL java::Impl2\.g:\(Ljava/lang/String;\)V\(cast\(.*::b, struct java::Impl2\*\), \*.*\.nonGenericData\)
9+
CALL java::Impl1\.g:\(Ljava/lang/String;\)V\(cast\(.*::b, struct java::Impl1\*\), \*.*\.nonGenericData\)
1010
--
1111
--
1212
Both the implementation classes use a different generic token (Impl1::T and Impl2::T) to refer

jbmc/regression/jbmc/lazyloading_no_candidates/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Test
44
^EXIT=0$
55
^SIGNAL=0$
66
^CI lazy methods: elaborate java::Test\$intf\.f:\(\)V$
7-
Test\$intf\.f:\(\)V\(\);$
7+
Test\$intf\.f:\(\)V\(.*\)$
88
--
99
--
1010
This doesn't work under symex-driven lazy loading because it is incompatible with lazy-methods (default)

jbmc/regression/jbmc/reachability-slice/test.desc

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ A
33
--reachability-slice --function A.foo --show-goto-functions --property 'java::A.foo:(I)V.assertion.1'
44
^EXIT=0$
55
^SIGNAL=0$
6-
= \(int\)\(short\)1001
7-
= \(int\)\(short\)1002
8-
= \(int\)\(short\)1003
6+
:= .*1001
7+
:= .*1002
8+
:= .*1003
99
--
10-
= \(int\)\(short\)1004
11-
= \(int\)\(short\)1005
10+
:= .*1004
11+
:= .*1005
1212
--
1313
Doesn't work with symex-driven lazy loading because the reachability slicer is a whole-program pass.

jbmc/regression/jbmc/reachability-slice/test2.desc

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ A
33
--reachability-slice --function A.foo --show-goto-functions --property 'java::A.foo:(I)V.assertion.2'
44
^EXIT=0$
55
^SIGNAL=0$
6-
= \(int\)\(short\)1001
7-
= \(int\)\(short\)1004
6+
:= .*1001
7+
:= .*1004
88
--
9-
= \(int\)\(short\)1002
10-
= \(int\)\(short\)1003
11-
= \(int\)\(short\)1005
9+
:= .*1002
10+
:= .*1003
11+
:= .*1005
1212
--
1313
Doesn't work with symex-driven lazy loading because the reachability slicer is a whole-program pass.

jbmc/regression/jbmc/reachability-slice/test3.desc

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ A
33
--reachability-slice --function A.foo --show-goto-functions
44
^EXIT=0$
55
^SIGNAL=0$
6-
= \(int\)\(short\)1001
7-
= \(int\)\(short\)1002
8-
= \(int\)\(short\)1003
9-
= \(int\)\(short\)1004
10-
= \(int\)\(short\)1005
6+
:= .*1001
7+
:= .*1002
8+
:= .*1003
9+
:= .*1004
10+
:= .*1005
1111
--
1212
--
1313
Doesn't work with symex-driven lazy loading because the reachability slicer is a whole-program pass.

jbmc/regression/jbmc/remove_virtual_function_typecast/test.desc

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
CORE symex-driven-lazy-loading-expected-failure
22
VirtualFunctions
33
--java-max-vla-length 48 --unwind 8 --java-unwind-enum-static --trace --function VirtualFunctions.check --show-goto-functions
4-
\(struct VirtualFunctions\$B \*\)a \. VirtualFunctions\$B\.f:\(\)V\(\);$
5-
a \. VirtualFunctions\$A\.f:\(\)V\(\);$
6-
b \. VirtualFunctions\$B\.f:\(\)V\(\);$
7-
\(struct VirtualFunctions\$B \*\)c \. VirtualFunctions\$B\.f:\(\)V\(\);$
4+
CALL java::VirtualFunctions\$B\.f:\(\)V\(cast\(.*::a, struct java::VirtualFunctions\$B\*\)\)$
5+
CALL java::VirtualFunctions\$A\.f:\(\)V\(.*::a\)$
6+
CALL java::VirtualFunctions\$B\.f:\(\)V\(.*::b\)$
7+
CALL java::VirtualFunctions\$B\.f:\(\)V\(cast\(.*::c, struct java::VirtualFunctions\$B\*\)\)$
88
^EXIT=0$
99
^SIGNAL=0$
1010
--
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
CORE symex-driven-lazy-loading-expected-failure
22
ArrayListEquals
33
--java-max-vla-length 48 --unwind 8 --java-unwind-enum-static --trace --function ArrayListEquals.check2 --show-goto-functions
4-
e2 . ArrayList\$Itr.hasNext:\(\)Z\(\);
4+
java::ArrayList\$Itr.hasNext:\(\)Z\(.*\)
55
^EXIT=0$
66
^SIGNAL=0$
77
--
8-
e2 . ListIterator.hasNext:\(\)Z\(\);
8+
java::ListIterator.hasNext:\(\)Z\(.*\)
99
--
1010
This doesn't work under symex-driven lazy loading because it is incompatible with lazy-methods (default)

jbmc/regression/jbmc/virtual_temp_var_for_this_argument/test_one_candidate.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Main
33
--show-goto-functions --function Main.oneCandidate
44
^EXIT=0$
55
^SIGNAL=0$
6-
B\.f:\(\)V\(\);$
6+
B\.f:\(\)V\(.*::b\)$
77
--
88
this_argument
99
--

jbmc/regression/jbmc/virtual_temp_var_for_this_argument/test_two_candidates_no_derefs.desc

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ Main
33
--show-goto-functions --function Main.twoCandidatesNoDerefs
44
^EXIT=0$
55
^SIGNAL=0$
6-
a \. A\.f:\(\)V\(\);$
7-
a \. B\.f:\(\)V\(\);$
6+
CALL java::A\.f:\(\)V\(.*::a\)$
7+
CALL java::B\.f:\(\)V\(.*::a.*\)$
88
--
99
this_argument
1010
--

jbmc/regression/jbmc/virtual_temp_var_for_this_argument/test_two_candidates_with_derefs.desc

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ Main
33
--show-goto-functions --function Main.twoCandidatesWithDerefs
44
^EXIT=0$
55
^SIGNAL=0$
6-
struct A \*this_argument;$
7-
this_argument = aContainer->a_field;$
8-
this_argument \. A\.f:\(\)V\(\);$
9-
this_argument \. B\.f:\(\)V\(\);$
6+
DECL .*::this_argument : struct java::A\*$
7+
ASSIGN .*::this_argument := \*.*::aContainer\.a_field$
8+
CALL java::A\.f:\(\)V\(.*this_argument.*\)$
9+
CALL java::B\.f:\(\)V\(.*this_argument.*\)$
1010
--
1111
--
1212
The temporary variable `this_argument` should be created, because it

regression/cbmc-library/string-abstraction/test-c-with-string-abstraction.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
test.c
33
--string-abstraction --show-goto-functions
4-
strlen#return_value = \(.*\)s#str->length - POINTER_OFFSET\(s\)\)*;
4+
ASSIGN strlen#return_value := cast\(cast\(\*strlen::s::s#str\.length, signedbv\[.*\]\) - pointer_offset\(strlen::s\), unsignedbv\[.*\]\)
55
^EXIT=0$
66
^SIGNAL=0$
77
--

regression/cbmc-library/string-abstraction/test-c-without-string-abstraction.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
test.c
33
--show-goto-functions
4-
IF !\(\(signed int\)s\[\(.*\)len\] != 0\) THEN GOTO 2
4+
IF ¬\(cast\(\*\(strlen::s \+ cast\(strlen::1::len, signedbv\[.*\]\)\), signedbv\[32\]\) ≠ 0\) THEN GOTO 2
55
^EXIT=0$
66
^SIGNAL=0$
77
--

0 commit comments

Comments
 (0)