Description: make regression tests portable
 .
 cbmc (5.12-1) unstable; urgency=low
 .
   * New upstream release
   * Updated Standards version to 4.5.0.1 (no changes required)
   * Acknowledge NMU - thanks Adrian for the build fix (Closes: #952256)
Author: Michael Tautschnig <mt@debian.org>
Bug-Debian: https://bugs.debian.org/952256

---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: 2020-04-24

--- cbmc-5.12.orig/regression/cbmc/array-cell-sensitivity2/test.desc
+++ cbmc-5.12/regression/cbmc/array-cell-sensitivity2/test.desc
@@ -1,7 +1,7 @@
 CORE
 test.c
 --show-vcc
-main::1::array!0@1#2 = with\(main::1::array!0@1#1, cast\(-1 \+ main::argc!0@1#1, signedbv\[64\]\), 1\)
+main::1::array!0@1#2 = with\(main::1::array!0@1#1, (cast\()?-1 \+ main::argc!0@1#1(, signedbv\[64\]\))?, 1\)
 main::1::array!0@1#3 = with\(main::1::array!0@1#2, 1, main::argc!0@1#1\)
 ^EXIT=0$
 ^SIGNAL=0$
--- cbmc-5.12.orig/regression/cbmc/array-function-parameters/test.desc
+++ cbmc-5.12/regression/cbmc/array-function-parameters/test.desc
@@ -14,6 +14,6 @@ test.c
 \[test.assertion.9\] line \d+ assertion Test.lists\[0\] != Test.lists\[1\]: SUCCESS
 \[test.assertion.10\] line \d+ assertion Test.lists\[1\] != Test.lists\[2\]: SUCCESS
 \[test.assertion.11\] line \d+ assertion Test.lists\[2\] != Test.lists\[3\]: SUCCESS
-\[test.array_bounds.1\] line \d+ array 'Test'.lists upper bound in Test.lists\[\(signed long( long)? int\)4\]: FAILURE
+\[test.array_bounds.1\] line \d+ array 'Test'.lists upper bound in Test.lists\[(\(signed long( long)? int\))?4\]: FAILURE
 \[test.assertion.12\] line \d+ assertion !Test.lists\[4\]: FAILURE
 --
--- cbmc-5.12.orig/regression/cbmc/double_deref/double_deref_with_pointer_arithmetic.desc
+++ cbmc-5.12/regression/cbmc/double_deref/double_deref_with_pointer_arithmetic.desc
@@ -1,7 +1,7 @@
 CORE
 double_deref_with_pointer_arithmetic.c
 --show-vcc
-^\{-[0-9]+\} derefd_pointer::derefd_pointer!0#1 = \{ symex_dynamic::dynamic_object1#3\[\[0\]\], symex_dynamic::dynamic_object1#3\[\[1\]\] \}\[cast\(mod #source_location=""\(main::argc!0@1#1, 2\), signedbv\[64\]\)\]
+^\{-[0-9]+\} derefd_pointer::derefd_pointer!0#1 = \{ symex_dynamic::dynamic_object1#3\[\[0\]\], symex_dynamic::dynamic_object1#3\[\[1\]\] \}\[(cast\()?mod #source_location=""\(main::argc!0@1#1, 2\)(, signedbv\[64\]\))?\]
 ^\{1\} \(derefd_pointer::derefd_pointer!0#1 = address_of\(symex_dynamic::dynamic_object[23]\) \? main::argc!0@1#1 = 2 : \(derefd_pointer::derefd_pointer!0#1 = address_of\(symex_dynamic::dynamic_object[23]\) \? main::argc!0@1#1 = 1 : symex::invalid_object!0#0 = main::argc!0@1#1\)\)
 ^EXIT=0$
 ^SIGNAL=0$
--- cbmc-5.12.orig/regression/cbmc/memory_allocation2/test.desc
+++ cbmc-5.12/regression/cbmc/memory_allocation2/test.desc
@@ -3,9 +3,9 @@ main.c
 --bounds-check
 ^EXIT=10$
 ^SIGNAL=0$
-^\[main\.array_bounds\.[1-5]\] .*: SUCCESS$
-^\[main\.array_bounds\.[67]\] line 38 array.buffer (dynamic object )?upper bound in buffers\[\(signed long (long )?int\)0\]->buffer\[\(signed long (long )?int\)100\]: FAILURE$
-^\*\* 2 of 7 failed
+^\[main\.array_bounds\.[1-5]\] line (36|37) .*: SUCCESS$
+^\[main\.array_bounds\.[4-7]\] line 38 array.buffer (dynamic object )?upper bound in buffers\[(\(signed long (long )?int\))?0\]->buffer\[(\(signed long (long )?int\))?100\]: FAILURE$
+^\*\* 2 of [57] failed
 ^VERIFICATION FAILED$
 --
 ^warning: ignoring
--- cbmc-5.12.orig/regression/cbmc/pragma_cprover1/test.desc
+++ cbmc-5.12/regression/cbmc/pragma_cprover1/test.desc
@@ -1,7 +1,7 @@
 CORE
 main.c
 --signed-overflow-check --bounds-check
-line 14 array 'y' upper bound in y\[\(signed long( long)? int\)1\]: FAILURE$
+line 14 array 'y' upper bound in y\[(\(signed long( long)? int\))?1\]: FAILURE$
 ^\*\* 1 of 1 failed
 ^VERIFICATION FAILED$
 ^EXIT=10$
--- cbmc-5.12.orig/regression/cbmc/xml-trace/test.desc
+++ cbmc-5.12/regression/cbmc/xml-trace/test.desc
@@ -7,7 +7,7 @@ VERIFICATION FAILED
 <assignment assignment_type="state" base_name="u" display_name="test::u" hidden="false" identifier="test::u" mode="C" step_nr="\d+" thread="0">
 <location file=".*" function="test" line="\d+" working-directory=".*"/>
 <type>union myunion</type>
-<full_lhs>byte_extract_little_endian\(u, 0ll?, .*int.*\)</full_lhs>
+<full_lhs>byte_extract_little_endian\(u, 0l?l?, .*int.*\)</full_lhs>
 <full_lhs_value>\d+ll?</full_lhs_value>
 <value>\{ \.i=\d+ll? \}</value>
 <value_expression>
--- cbmc-5.12.orig/regression/cbmc/byte_update11/main.c
+++ cbmc-5.12/regression/cbmc/byte_update11/main.c
@@ -1,3 +1,5 @@
+#include <limits.h>
+
 struct S
 {
   int i;
@@ -6,7 +8,11 @@ struct S
 int main()
 {
   unsigned x;
+  // make sure x divides by sizeof(int) without remainder for the char-based
+  // index below to access the lowest byte
   __CPROVER_assume(x % sizeof(int) == 0);
+  // make sure x is a valid array index
+  __CPROVER_assume(x <= SSIZE_MAX);
   struct S A[x];
   ((char *)A)[x] = 42;
   __CPROVER_assert((A[x / sizeof(int)].i & 0xFF) == 42, "lowest byte is 42");
--- cbmc-5.12.orig/regression/goto-harness/pointer-to-array-function-parameters-max-size/test.desc
+++ cbmc-5.12/regression/goto-harness/pointer-to-array-function-parameters-max-size/test.desc
@@ -2,12 +2,12 @@ CORE
 test.c
 --harness-type call-function --function test --max-array-size 10 --associated-array-size arr:sz
 \[test.assertion.1\] line \d+ assertion sz < 10: FAILURE
-\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer NULL in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer invalid in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.\d+\] line \d+ dereference failure: deallocated dynamic object in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.\d+\] line \d+ dereference failure: dead object in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside object bounds in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside object bounds in arr\[\(signed( long)* int\)i\]: SUCCESS
+\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer NULL in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer invalid in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.\d+\] line \d+ dereference failure: deallocated dynamic object in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.\d+\] line \d+ dereference failure: dead object in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside object bounds in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside object bounds in arr\[(\(signed( long)* int\))?i\]: SUCCESS
 ^EXIT=10$
 ^SIGNAL=0$
 --
--- cbmc-5.12.orig/regression/goto-harness/pointer-to-array-function-parameters-multi-arg-wrong/test.desc
+++ cbmc-5.12/regression/goto-harness/pointer-to-array-function-parameters-multi-arg-wrong/test.desc
@@ -3,6 +3,6 @@ test.c
 --harness-type call-function --function is_prefix_of --treat-pointer-as-array string --treat-pointer-as-array prefix --associated-array-size string:string_size --associated-array-size prefix:prefix_size --max-array-size 5
 ^EXIT=10$
 ^SIGNAL=0$
-\[is_prefix_of.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside dynamic object bounds in prefix\[\(signed( long)* int\)ix\]: FAILURE
+\[is_prefix_of.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside dynamic object bounds in prefix\[(\(signed( long)* int\))?ix\]: FAILURE
 VERIFICATION FAILED
 --
--- cbmc-5.12.orig/regression/goto-harness/pointer-to-array-function-parameters-with-size/test.desc
+++ cbmc-5.12/regression/goto-harness/pointer-to-array-function-parameters-with-size/test.desc
@@ -3,10 +3,10 @@ test.c
 --harness-type call-function --function test --treat-pointer-as-array arr --associated-array-size arr:sz
 ^EXIT=0$
 ^SIGNAL=0$
-\[test.pointer_dereference.1\] line \d+ dereference failure: pointer NULL in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.2\] line \d+ dereference failure: pointer invalid in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.3\] line \d+ dereference failure: deallocated dynamic object in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.4\] line \d+ dereference failure: dead object in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.5\] line \d+ dereference failure: pointer outside dynamic object bounds in arr\[\(signed( long)* int\)i\]: SUCCESS
-\[test.pointer_dereference.6\] line \d+ dereference failure: pointer outside object bounds in arr\[\(signed( long)* int\)i\]: SUCCESS
+\[test.pointer_dereference.1\] line \d+ dereference failure: pointer NULL in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.2\] line \d+ dereference failure: pointer invalid in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.3\] line \d+ dereference failure: deallocated dynamic object in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.4\] line \d+ dereference failure: dead object in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.5\] line \d+ dereference failure: pointer outside dynamic object bounds in arr\[(\(signed( long)* int\))?i\]: SUCCESS
+\[test.pointer_dereference.6\] line \d+ dereference failure: pointer outside object bounds in arr\[(\(signed( long)* int\))?i\]: SUCCESS
 --
--- cbmc-5.12.orig/regression/goto-harness/pointer-to-array-function-parameters/test.desc
+++ cbmc-5.12/regression/goto-harness/pointer-to-array-function-parameters/test.desc
@@ -1,8 +1,8 @@
 CORE
 test.c
 --harness-type call-function --function test --treat-pointer-as-array arr
-\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside dynamic object bounds in arr\[\(signed( long)* int\)0\]: SUCCESS
-\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside dynamic object bounds in arr\[\(signed( long)* int\)10\]: FAILURE
+\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside dynamic object bounds in arr\[(\(signed( long)* int\))?0\]: SUCCESS
+\[test.pointer_dereference.\d+\] line \d+ dereference failure: pointer outside dynamic object bounds in arr\[(\(signed( long)* int\))?10\]: FAILURE
 ^EXIT=10$
 ^SIGNAL=0$
 --
