From c286acff67405058eae4cf5e2243b9958f35e5b8 Mon Sep 17 00:00:00 2001
From: Michael Sammler <noreply@sammler.me>
Date: Wed, 10 Feb 2021 13:31:46 +0100
Subject: [PATCH] small tweaks to container of examples

---
 examples/container_of.c                       |  4 +-
 examples/proofs/container_of/generated_code.v | 59 +++++++++----------
 2 files changed, 31 insertions(+), 32 deletions(-)

diff --git a/examples/container_of.c b/examples/container_of.c
index a198a1aa..0e606918 100644
--- a/examples/container_of.c
+++ b/examples/container_of.c
@@ -1,5 +1,5 @@
 
-#define container_of(ptr, type, member) (type *)( (char *)(ptr) - offsetof(type,member) )
+#define container_of(ptr, type, member) (type *)( (unsigned char *)(ptr) - offsetof(type,member) )
 
 struct test {
   int a;
@@ -13,5 +13,5 @@ int container_of_test() {
   *b = 3;
   struct test *pt = container_of(b, struct test, b);
   pt->a = 4;
-  return pt->a;
+  return t.a;
 }
diff --git a/examples/proofs/container_of/generated_code.v b/examples/proofs/container_of/generated_code.v
index d70efdf7..96ae6884 100644
--- a/examples/proofs/container_of/generated_code.v
+++ b/examples/proofs/container_of/generated_code.v
@@ -11,30 +11,29 @@ Section code.
   Definition loc_4 : location_info := LocationInfo file_0 13 2 13 9.
   Definition loc_5 : location_info := LocationInfo file_0 14 2 14 77.
   Definition loc_6 : location_info := LocationInfo file_0 15 2 15 12.
-  Definition loc_7 : location_info := LocationInfo file_0 16 2 16 15.
-  Definition loc_8 : location_info := LocationInfo file_0 16 9 16 14.
-  Definition loc_9 : location_info := LocationInfo file_0 16 9 16 14.
-  Definition loc_10 : location_info := LocationInfo file_0 16 9 16 11.
-  Definition loc_11 : location_info := LocationInfo file_0 16 9 16 11.
-  Definition loc_12 : location_info := LocationInfo file_0 15 2 15 7.
+  Definition loc_7 : location_info := LocationInfo file_0 16 2 16 13.
+  Definition loc_8 : location_info := LocationInfo file_0 16 9 16 12.
+  Definition loc_9 : location_info := LocationInfo file_0 16 9 16 12.
+  Definition loc_10 : location_info := LocationInfo file_0 16 9 16 10.
+  Definition loc_11 : location_info := LocationInfo file_0 15 2 15 7.
+  Definition loc_12 : location_info := LocationInfo file_0 15 2 15 4.
   Definition loc_13 : location_info := LocationInfo file_0 15 2 15 4.
-  Definition loc_14 : location_info := LocationInfo file_0 15 2 15 4.
-  Definition loc_15 : location_info := LocationInfo file_0 15 10 15 11.
-  Definition loc_16 : location_info := LocationInfo file_0 14 20 14 76.
-  Definition loc_17 : location_info := LocationInfo file_0 14 35 14 76.
-  Definition loc_18 : location_info := LocationInfo file_0 14 37 14 48.
+  Definition loc_14 : location_info := LocationInfo file_0 15 10 15 11.
+  Definition loc_15 : location_info := LocationInfo file_0 14 20 14 76.
+  Definition loc_16 : location_info := LocationInfo file_0 14 35 14 76.
+  Definition loc_17 : location_info := LocationInfo file_0 14 37 14 48.
+  Definition loc_18 : location_info := LocationInfo file_0 14 45 14 48.
   Definition loc_19 : location_info := LocationInfo file_0 14 45 14 48.
-  Definition loc_20 : location_info := LocationInfo file_0 14 45 14 48.
-  Definition loc_21 : location_info := LocationInfo file_0 14 51 14 74.
-  Definition loc_24 : location_info := LocationInfo file_0 13 2 13 4.
+  Definition loc_20 : location_info := LocationInfo file_0 14 51 14 74.
+  Definition loc_23 : location_info := LocationInfo file_0 13 2 13 4.
+  Definition loc_24 : location_info := LocationInfo file_0 13 3 13 4.
   Definition loc_25 : location_info := LocationInfo file_0 13 3 13 4.
-  Definition loc_26 : location_info := LocationInfo file_0 13 3 13 4.
-  Definition loc_27 : location_info := LocationInfo file_0 13 7 13 8.
-  Definition loc_28 : location_info := LocationInfo file_0 12 11 12 15.
-  Definition loc_29 : location_info := LocationInfo file_0 12 12 12 15.
-  Definition loc_30 : location_info := LocationInfo file_0 12 12 12 13.
-  Definition loc_34 : location_info := LocationInfo file_0 11 24 11 25.
-  Definition loc_35 : location_info := LocationInfo file_0 11 32 11 33.
+  Definition loc_26 : location_info := LocationInfo file_0 13 7 13 8.
+  Definition loc_27 : location_info := LocationInfo file_0 12 11 12 15.
+  Definition loc_28 : location_info := LocationInfo file_0 12 12 12 15.
+  Definition loc_29 : location_info := LocationInfo file_0 12 12 12 13.
+  Definition loc_33 : location_info := LocationInfo file_0 11 24 11 25.
+  Definition loc_34 : location_info := LocationInfo file_0 11 32 11 33.
 
   (* Definition of struct [test]. *)
   Program Definition struct_test := {|
@@ -59,21 +58,21 @@ Section code.
       <[ "#0" :=
         "t" <-{ layout_of struct_test }
           StructInit struct_test [
-            ("a", LocInfoE loc_34 (i2v 1 i32) : expr) ;
-            ("b", LocInfoE loc_35 (i2v 2 i32) : expr)
+            ("a", LocInfoE loc_33 (i2v 1 i32) : expr) ;
+            ("b", LocInfoE loc_34 (i2v 2 i32) : expr)
           ] ;
         "b" <-{ void* }
-          LocInfoE loc_28 (&(LocInfoE loc_29 ((LocInfoE loc_30 ("t")) at{struct_test} "b"))) ;
+          LocInfoE loc_27 (&(LocInfoE loc_28 ((LocInfoE loc_29 ("t")) at{struct_test} "b"))) ;
         locinfo: loc_4 ;
-        LocInfoE loc_25 (!{void*} (LocInfoE loc_26 ("b"))) <-{ it_layout i32 }
-          LocInfoE loc_27 (i2v 3 i32) ;
+        LocInfoE loc_24 (!{void*} (LocInfoE loc_25 ("b"))) <-{ it_layout i32 }
+          LocInfoE loc_26 (i2v 3 i32) ;
         "pt" <-{ void* }
-          LocInfoE loc_16 (UnOp (CastOp $ PtrOp) (PtrOp) (LocInfoE loc_17 ((LocInfoE loc_18 (UnOp (CastOp $ PtrOp) (PtrOp) (LocInfoE loc_19 (use{void*} (LocInfoE loc_20 ("b")))))) at_neg_offset{it_layout u8, PtrOp, IntOp size_t} (LocInfoE loc_21 ((OffsetOf (struct_test) ("b"))))))) ;
+          LocInfoE loc_15 (UnOp (CastOp $ PtrOp) (PtrOp) (LocInfoE loc_16 ((LocInfoE loc_17 (UnOp (CastOp $ PtrOp) (PtrOp) (LocInfoE loc_18 (use{void*} (LocInfoE loc_19 ("b")))))) at_neg_offset{it_layout u8, PtrOp, IntOp size_t} (LocInfoE loc_20 ((OffsetOf (struct_test) ("b"))))))) ;
         locinfo: loc_6 ;
-        LocInfoE loc_12 ((LocInfoE loc_13 (!{void*} (LocInfoE loc_14 ("pt")))) at{struct_test} "a") <-{ it_layout i32 }
-          LocInfoE loc_15 (i2v 4 i32) ;
+        LocInfoE loc_11 ((LocInfoE loc_12 (!{void*} (LocInfoE loc_13 ("pt")))) at{struct_test} "a") <-{ it_layout i32 }
+          LocInfoE loc_14 (i2v 4 i32) ;
         locinfo: loc_7 ;
-        Return (LocInfoE loc_8 (use{it_layout i32} (LocInfoE loc_9 ((LocInfoE loc_10 (!{void*} (LocInfoE loc_11 ("pt")))) at{struct_test} "a"))))
+        Return (LocInfoE loc_8 (use{it_layout i32} (LocInfoE loc_9 ((LocInfoE loc_10 ("t")) at{struct_test} "a"))))
       ]> $∅
     )%E
   |}.
-- 
GitLab