Commit 8ca9d1b9 authored by Rodolphe Lepigre's avatar Rodolphe Lepigre Committed by Michael Sammler
Browse files

Progress towards tracking pointer provenance in integers

parent d10403a3
Pipeline #45749 passed with stage
in 29 minutes and 4 seconds
......@@ -2,19 +2,49 @@
#include <stdint.h>
#include <stddef.h>
[[rc::args("&own<int<i32>>")]]
[[rc::returns("int<size_t>")]]
size_t int_ptr(int* p){
size_t i = (size_t) p;
//@rc::inlined
//@Notation "P ? l : r" :=
//@ (if bool_decide P then l else r)
//@ (at level 100, l at next level, r at next level).
//@rc::end
/**** Casting a pointer to an integer ***************************************/
// Cast a pointer to an integer, keeping the provenance.
[[rc::parameters("l : loc")]]
[[rc::args("l @ &own<int<i32>>")]]
[[rc::returns("l @ intptr<uintptr_t>")]]
uintptr_t int_ptr1(int* p){
uintptr_t i = (uintptr_t) p;
// return (i + 0); ← Does not work (provenance dropped by arithmetic).
return i;
}
// Cast a pointer to an integer, but losing the provenance.
[[rc::parameters("l : loc")]]
[[rc::args("l @ &own<int<i32>>")]]
[[rc::returns("{l.2} @ int<uintptr_t>")]]
uintptr_t int_ptr2(int* p){
uintptr_t i = (uintptr_t) p;
return i;
}
// Cast a pointer to an integer, but losing the provenance.
[[rc::parameters("l : loc")]]
[[rc::args("l @ &own<int<i32>>")]]
[[rc::returns("{l.2} @ int<uintptr_t>")]]
uintptr_t int_ptr3(int* p){
uintptr_t i = (uintptr_t) p;
return i + 0; // ← We can do arithmetic (provenance not required).
}
// Weird function working on integers obtained from pointers.
[[rc::parameters("p1 : loc", "p2 : loc")]]
[[rc::args("p1 @ &own<int<i32>>", "p2 @ &own<int<i32>>")]]
[[rc::returns("{p1.2 `min` p2.2} @ int<size_t>")]]
size_t min_ptr_val(int *p1, int *p2){
size_t i1 = (size_t) p1;
size_t i2 = (size_t) p2;
[[rc::returns("{p1.2 `min` p2.2} @ int<uintptr_t>")]]
uintptr_t min_ptr_val1(int *p1, int *p2){
uintptr_t i1 = (uintptr_t) p1;
uintptr_t i2 = (uintptr_t) p2;
if(i1 <= i2){
return i1;
......@@ -23,53 +53,106 @@ size_t min_ptr_val(int *p1, int *p2){
return i2;
}
// The same but keeping the provenance.
[[rc::parameters("p1 : loc", "p2 : loc")]]
[[rc::args("p1 @ &own<int<i32>>", "p2 @ &own<int<i32>>")]]
[[rc::returns("{p1.2 ≤ p2.2 ? p1 : p2} @ intptr<uintptr_t>")]]
uintptr_t min_ptr_val2(int *p1, int *p2){
uintptr_t i1 = (uintptr_t) p1;
uintptr_t i2 = (uintptr_t) p2;
if(i1 <= i2){
return i1;
}
return i2;
}
/**** Casting an integer to a pointer ***************************************/
// Simple roundtrip cast.
[[rc::parameters("p : loc")]]
[[rc::args("p @ &own<int<i32>>")]]
[[rc::returns("{(None, p.2)} @ &own<place<{(None, p.2)}>>")]]
[[rc::returns("p @ &own<place<p>>")]]
int* roundtrip1(int* p){
size_t i = (size_t) p;
void *q = (void*) i;
uintptr_t i = (uintptr_t) p;
void *q = (void*) i; // ← The provenance transfered back.
return q;
}
// Roundtrip cast with dummy arithmetic.
[[rc::parameters("p : loc")]]
[[rc::args("p @ &own<int<i32>>")]]
[[rc::exists("id : {option alloc_id}")]] // ← Only ∃ on provenance.
[[rc::returns("{(id, p.2)} @ &own<place<{(id, p.2)}>>")]]
int* roundtrip2(int* p){
uintptr_t i = (uintptr_t) p;
void *q = (void*) (i + 0); // ← The provenance is lost here.
return q;
}
// Roundtrip cast with dummy arithmetic and provenance recovery.
[[rc::parameters("p : loc", "n : Z")]]
[[rc::args("p @ &own<n @ int<i32>>")]]
[[rc::returns("p @ &own<n @ int<i32>>")]]
[[rc::tactics("all: try solve_loc_eq.")]]
int* roundtrip2(int* p){
size_t i = (size_t) p;
int *q = (void*) i;
return rc_copy_alloc_id(q, p);
int* roundtrip3(int* p){
uintptr_t i = (uintptr_t) p;
int *q = (void*) (i + 0); // ← The provenance is lost here.
return rc_copy_alloc_id(q, p); // ← Copy provenance from [p].
}
// Roundrip cast with flow of ownership.
[[rc::parameters("l : loc", "n : Z")]]
[[rc::args("l @ &own<n @ int<i32>>")]]
[[rc::returns("n @ int<i32>")]]
[[rc::ensures("own l : n @ int<i32>")]]
int roundtrip_and_read(int* p){
size_t i = (size_t) p;
int roundtrip_and_read1(int* p){
uintptr_t i = (uintptr_t) p;
int *q = (int*) i;
int r = *q;
return r;
}
// Roundrip cast with flow of ownership and provenance recovery.
[[rc::parameters("l : loc", "n : Z")]]
[[rc::args("l @ &own<n @ int<i32>>")]]
[[rc::returns("n @ int<i32>")]]
[[rc::ensures("own l : n @ int<i32>")]]
int roundtrip_and_read2(int* p){
uintptr_t i = (uintptr_t) p;
int *q = (int*) (i * 1);
q = rc_copy_alloc_id(q, p);
int r = *q;
return r;
}
// Small variation in syntax (for testing).
[[rc::parameters("p : loc", "n : Z")]]
[[rc::args("p @ &own<n @ int<i32>>")]]
[[rc::returns("n @ int<i32>")]]
[[rc::ensures("own p : n @ int<i32>")]]
int roundtrip_and_read2(int* p){
int roundtrip_and_read3(int* p){
uintptr_t i = (uintptr_t) p;
int *q = rc_copy_alloc_id((int*) i, p);
int *q = rc_copy_alloc_id((int*) (i * 1), p);
return *q;
}
// Another variant of the same example.
[[rc::parameters("p : loc", "n : Z")]]
[[rc::args("p @ &own<n @ int<i32>>")]]
[[rc::returns("n @ int<i32>")]]
[[rc::ensures("own p : n @ int<i32>")]]
int roundtrip_and_read3(int* p){
size_t i = (size_t) p;
int *q = (int*) i;
int roundtrip_and_read4(int* p){
uintptr_t i = (uintptr_t) p;
int *q = (int*) (i * 1);
return *(rc_copy_alloc_id(q, p));
}
// Copy the provenance from an int.
[[rc::parameters("p : loc")]]
[[rc::args("p @ intptr<uintptr_t>")]]
[[rc::returns("p @ &own<place<p>>")]]
void* int_to_ptr(uintptr_t p){
void *q = (void*) (p * 1);
return (rc_copy_alloc_id(q, p));
}
......@@ -111,7 +111,7 @@ size_t fsm_slot_for_key(size_t len, size_t key) {
[[rc::ensures("{∃ x, items !! n = Some x ∧ probe_ref key items = Some (n, x)}")]]
[[rc::lemmas("lookup_lt_is_Some_2")]]
[[rc::tactics("all: try by eexists _; split => //; apply probe_ref_take_Some; naive_solver.")]]
[[rc::tactics("all: try by apply: probe_ref_go_next_take=> //i; intros Hi%lookup_rotate_r_Some; try lia; simplify_eq; naive_solver.")]]
[[rc::tactics("all: try by apply: probe_ref_go_next_take => // ? /lookup_rotate_r_Some ?; try lia; simplify_eq; naive_solver.")]]
size_t fsm_probe(struct fixed_size_map *m, size_t key) {
size_t slot_idx = fsm_slot_for_key(m->length, key);
......
......@@ -6,117 +6,203 @@ Set Default Proof Using "Type".
(* Generated from [examples/intptr.c]. *)
Section code.
Definition file_0 : string := "examples/intptr.c".
Definition loc_2 : location_info := LocationInfo file_0 8 2 8 24.
Definition loc_3 : location_info := LocationInfo file_0 9 2 9 11.
Definition loc_4 : location_info := LocationInfo file_0 9 9 9 10.
Definition loc_5 : location_info := LocationInfo file_0 9 9 9 10.
Definition loc_6 : location_info := LocationInfo file_0 8 13 8 23.
Definition loc_7 : location_info := LocationInfo file_0 8 22 8 23.
Definition loc_8 : location_info := LocationInfo file_0 8 22 8 23.
Definition loc_13 : location_info := LocationInfo file_0 16 2 16 26.
Definition loc_14 : location_info := LocationInfo file_0 17 2 17 26.
Definition loc_15 : location_info := LocationInfo file_0 19 2 21 3.
Definition loc_16 : location_info := LocationInfo file_0 23 2 23 12.
Definition loc_17 : location_info := LocationInfo file_0 23 9 23 11.
Definition loc_18 : location_info := LocationInfo file_0 23 9 23 11.
Definition loc_19 : location_info := LocationInfo file_0 19 14 21 3.
Definition loc_20 : location_info := LocationInfo file_0 20 4 20 14.
Definition loc_21 : location_info := LocationInfo file_0 20 11 20 13.
Definition loc_22 : location_info := LocationInfo file_0 20 11 20 13.
Definition loc_24 : location_info := LocationInfo file_0 19 5 19 13.
Definition loc_25 : location_info := LocationInfo file_0 19 5 19 7.
Definition loc_26 : location_info := LocationInfo file_0 19 5 19 7.
Definition loc_27 : location_info := LocationInfo file_0 19 11 19 13.
Definition loc_28 : location_info := LocationInfo file_0 19 11 19 13.
Definition loc_29 : location_info := LocationInfo file_0 17 14 17 25.
Definition loc_30 : location_info := LocationInfo file_0 17 23 17 25.
Definition loc_31 : location_info := LocationInfo file_0 17 23 17 25.
Definition loc_34 : location_info := LocationInfo file_0 16 14 16 25.
Definition loc_35 : location_info := LocationInfo file_0 16 23 16 25.
Definition loc_36 : location_info := LocationInfo file_0 16 23 16 25.
Definition loc_41 : location_info := LocationInfo file_0 30 2 30 24.
Definition loc_42 : location_info := LocationInfo file_0 31 2 31 22.
Definition loc_43 : location_info := LocationInfo file_0 32 2 32 11.
Definition loc_44 : location_info := LocationInfo file_0 32 9 32 10.
Definition loc_45 : location_info := LocationInfo file_0 32 9 32 10.
Definition loc_46 : location_info := LocationInfo file_0 31 12 31 21.
Definition loc_47 : location_info := LocationInfo file_0 31 20 31 21.
Definition loc_48 : location_info := LocationInfo file_0 31 20 31 21.
Definition loc_51 : location_info := LocationInfo file_0 30 13 30 23.
Definition loc_52 : location_info := LocationInfo file_0 30 22 30 23.
Definition loc_53 : location_info := LocationInfo file_0 30 22 30 23.
Definition loc_58 : location_info := LocationInfo file_0 40 2 40 24.
Definition loc_59 : location_info := LocationInfo file_0 41 2 41 21.
Definition loc_60 : location_info := LocationInfo file_0 42 2 42 47.
Definition loc_61 : location_info := LocationInfo file_0 42 9 42 46.
Definition loc_62 : location_info := LocationInfo file_0 42 35 42 38.
Definition loc_63 : location_info := LocationInfo file_0 42 35 42 38.
Definition loc_64 : location_info := LocationInfo file_0 42 42 42 45.
Definition loc_65 : location_info := LocationInfo file_0 42 42 42 45.
Definition loc_66 : location_info := LocationInfo file_0 41 11 41 20.
Definition loc_67 : location_info := LocationInfo file_0 41 19 41 20.
Definition loc_68 : location_info := LocationInfo file_0 41 19 41 20.
Definition loc_71 : location_info := LocationInfo file_0 40 13 40 23.
Definition loc_72 : location_info := LocationInfo file_0 40 22 40 23.
Definition loc_73 : location_info := LocationInfo file_0 40 22 40 23.
Definition loc_78 : location_info := LocationInfo file_0 50 2 50 24.
Definition loc_79 : location_info := LocationInfo file_0 51 2 51 20.
Definition loc_80 : location_info := LocationInfo file_0 52 2 52 44.
Definition loc_81 : location_info := LocationInfo file_0 53 2 53 13.
Definition loc_82 : location_info := LocationInfo file_0 54 2 54 11.
Definition loc_83 : location_info := LocationInfo file_0 54 9 54 10.
Definition loc_84 : location_info := LocationInfo file_0 54 9 54 10.
Definition loc_85 : location_info := LocationInfo file_0 53 10 53 12.
Definition loc_86 : location_info := LocationInfo file_0 53 10 53 12.
Definition loc_87 : location_info := LocationInfo file_0 53 11 53 12.
Definition loc_88 : location_info := LocationInfo file_0 53 11 53 12.
Definition loc_91 : location_info := LocationInfo file_0 52 2 52 3.
Definition loc_92 : location_info := LocationInfo file_0 52 6 52 43.
Definition loc_93 : location_info := LocationInfo file_0 52 32 52 35.
Definition loc_94 : location_info := LocationInfo file_0 52 32 52 35.
Definition loc_95 : location_info := LocationInfo file_0 52 39 52 42.
Definition loc_96 : location_info := LocationInfo file_0 52 39 52 42.
Definition loc_97 : location_info := LocationInfo file_0 51 11 51 19.
Definition loc_98 : location_info := LocationInfo file_0 51 18 51 19.
Definition loc_99 : location_info := LocationInfo file_0 51 18 51 19.
Definition loc_102 : location_info := LocationInfo file_0 50 13 50 23.
Definition loc_103 : location_info := LocationInfo file_0 50 22 50 23.
Definition loc_104 : location_info := LocationInfo file_0 50 22 50 23.
Definition loc_109 : location_info := LocationInfo file_0 62 2 62 30.
Definition loc_110 : location_info := LocationInfo file_0 63 2 63 56.
Definition loc_111 : location_info := LocationInfo file_0 64 2 64 12.
Definition loc_112 : location_info := LocationInfo file_0 64 9 64 11.
Definition loc_113 : location_info := LocationInfo file_0 64 9 64 11.
Definition loc_114 : location_info := LocationInfo file_0 64 10 64 11.
Definition loc_115 : location_info := LocationInfo file_0 64 10 64 11.
Definition loc_116 : location_info := LocationInfo file_0 63 11 63 55.
Definition loc_117 : location_info := LocationInfo file_0 63 37 63 40.
Definition loc_118 : location_info := LocationInfo file_0 63 37 63 40.
Definition loc_119 : location_info := LocationInfo file_0 63 44 63 54.
Definition loc_120 : location_info := LocationInfo file_0 63 52 63 53.
Definition loc_121 : location_info := LocationInfo file_0 63 52 63 53.
Definition loc_124 : location_info := LocationInfo file_0 62 16 62 29.
Definition loc_125 : location_info := LocationInfo file_0 62 28 62 29.
Definition loc_126 : location_info := LocationInfo file_0 62 28 62 29.
Definition loc_131 : location_info := LocationInfo file_0 72 2 72 24.
Definition loc_132 : location_info := LocationInfo file_0 73 2 73 20.
Definition loc_133 : location_info := LocationInfo file_0 74 2 74 50.
Definition loc_134 : location_info := LocationInfo file_0 74 9 74 49.
Definition loc_135 : location_info := LocationInfo file_0 74 9 74 49.
Definition loc_136 : location_info := LocationInfo file_0 74 10 74 49.
Definition loc_137 : location_info := LocationInfo file_0 74 37 74 40.
Definition loc_138 : location_info := LocationInfo file_0 74 37 74 40.
Definition loc_139 : location_info := LocationInfo file_0 74 44 74 47.
Definition loc_140 : location_info := LocationInfo file_0 74 44 74 47.
Definition loc_141 : location_info := LocationInfo file_0 73 11 73 19.
Definition loc_142 : location_info := LocationInfo file_0 73 18 73 19.
Definition loc_143 : location_info := LocationInfo file_0 73 18 73 19.
Definition loc_146 : location_info := LocationInfo file_0 72 13 72 23.
Definition loc_147 : location_info := LocationInfo file_0 72 22 72 23.
Definition loc_148 : location_info := LocationInfo file_0 72 22 72 23.
Definition loc_2 : location_info := LocationInfo file_0 18 2 18 30.
Definition loc_3 : location_info := LocationInfo file_0 20 2 20 11.
Definition loc_4 : location_info := LocationInfo file_0 20 9 20 10.
Definition loc_5 : location_info := LocationInfo file_0 20 9 20 10.
Definition loc_6 : location_info := LocationInfo file_0 18 16 18 29.
Definition loc_7 : location_info := LocationInfo file_0 18 28 18 29.
Definition loc_8 : location_info := LocationInfo file_0 18 28 18 29.
Definition loc_13 : location_info := LocationInfo file_0 28 2 28 30.
Definition loc_14 : location_info := LocationInfo file_0 29 2 29 11.
Definition loc_15 : location_info := LocationInfo file_0 29 9 29 10.
Definition loc_16 : location_info := LocationInfo file_0 29 9 29 10.
Definition loc_17 : location_info := LocationInfo file_0 28 16 28 29.
Definition loc_18 : location_info := LocationInfo file_0 28 28 28 29.
Definition loc_19 : location_info := LocationInfo file_0 28 28 28 29.
Definition loc_24 : location_info := LocationInfo file_0 37 2 37 30.
Definition loc_25 : location_info := LocationInfo file_0 38 2 38 15.
Definition loc_26 : location_info := LocationInfo file_0 38 9 38 14.
Definition loc_27 : location_info := LocationInfo file_0 38 9 38 10.
Definition loc_28 : location_info := LocationInfo file_0 38 9 38 10.
Definition loc_29 : location_info := LocationInfo file_0 38 13 38 14.
Definition loc_30 : location_info := LocationInfo file_0 37 16 37 29.
Definition loc_31 : location_info := LocationInfo file_0 37 28 37 29.
Definition loc_32 : location_info := LocationInfo file_0 37 28 37 29.
Definition loc_37 : location_info := LocationInfo file_0 46 2 46 32.
Definition loc_38 : location_info := LocationInfo file_0 47 2 47 32.
Definition loc_39 : location_info := LocationInfo file_0 49 2 51 3.
Definition loc_40 : location_info := LocationInfo file_0 53 2 53 12.
Definition loc_41 : location_info := LocationInfo file_0 53 9 53 11.
Definition loc_42 : location_info := LocationInfo file_0 53 9 53 11.
Definition loc_43 : location_info := LocationInfo file_0 49 14 51 3.
Definition loc_44 : location_info := LocationInfo file_0 50 4 50 14.
Definition loc_45 : location_info := LocationInfo file_0 50 11 50 13.
Definition loc_46 : location_info := LocationInfo file_0 50 11 50 13.
Definition loc_48 : location_info := LocationInfo file_0 49 5 49 13.
Definition loc_49 : location_info := LocationInfo file_0 49 5 49 7.
Definition loc_50 : location_info := LocationInfo file_0 49 5 49 7.
Definition loc_51 : location_info := LocationInfo file_0 49 11 49 13.
Definition loc_52 : location_info := LocationInfo file_0 49 11 49 13.
Definition loc_53 : location_info := LocationInfo file_0 47 17 47 31.
Definition loc_54 : location_info := LocationInfo file_0 47 29 47 31.
Definition loc_55 : location_info := LocationInfo file_0 47 29 47 31.
Definition loc_58 : location_info := LocationInfo file_0 46 17 46 31.
Definition loc_59 : location_info := LocationInfo file_0 46 29 46 31.
Definition loc_60 : location_info := LocationInfo file_0 46 29 46 31.
Definition loc_65 : location_info := LocationInfo file_0 61 2 61 32.
Definition loc_66 : location_info := LocationInfo file_0 62 2 62 32.
Definition loc_67 : location_info := LocationInfo file_0 64 2 66 3.
Definition loc_68 : location_info := LocationInfo file_0 68 2 68 12.
Definition loc_69 : location_info := LocationInfo file_0 68 9 68 11.
Definition loc_70 : location_info := LocationInfo file_0 68 9 68 11.
Definition loc_71 : location_info := LocationInfo file_0 64 14 66 3.
Definition loc_72 : location_info := LocationInfo file_0 65 4 65 14.
Definition loc_73 : location_info := LocationInfo file_0 65 11 65 13.
Definition loc_74 : location_info := LocationInfo file_0 65 11 65 13.
Definition loc_76 : location_info := LocationInfo file_0 64 5 64 13.
Definition loc_77 : location_info := LocationInfo file_0 64 5 64 7.
Definition loc_78 : location_info := LocationInfo file_0 64 5 64 7.
Definition loc_79 : location_info := LocationInfo file_0 64 11 64 13.
Definition loc_80 : location_info := LocationInfo file_0 64 11 64 13.
Definition loc_81 : location_info := LocationInfo file_0 62 17 62 31.
Definition loc_82 : location_info := LocationInfo file_0 62 29 62 31.
Definition loc_83 : location_info := LocationInfo file_0 62 29 62 31.
Definition loc_86 : location_info := LocationInfo file_0 61 17 61 31.
Definition loc_87 : location_info := LocationInfo file_0 61 29 61 31.
Definition loc_88 : location_info := LocationInfo file_0 61 29 61 31.
Definition loc_93 : location_info := LocationInfo file_0 78 2 78 30.
Definition loc_94 : location_info := LocationInfo file_0 79 2 79 22.
Definition loc_95 : location_info := LocationInfo file_0 80 2 80 11.
Definition loc_96 : location_info := LocationInfo file_0 80 9 80 10.
Definition loc_97 : location_info := LocationInfo file_0 80 9 80 10.
Definition loc_98 : location_info := LocationInfo file_0 79 12 79 21.
Definition loc_99 : location_info := LocationInfo file_0 79 20 79 21.
Definition loc_100 : location_info := LocationInfo file_0 79 20 79 21.
Definition loc_103 : location_info := LocationInfo file_0 78 16 78 29.
Definition loc_104 : location_info := LocationInfo file_0 78 28 78 29.
Definition loc_105 : location_info := LocationInfo file_0 78 28 78 29.
Definition loc_110 : location_info := LocationInfo file_0 89 2 89 30.
Definition loc_111 : location_info := LocationInfo file_0 90 2 90 28.
Definition loc_112 : location_info := LocationInfo file_0 91 2 91 11.
Definition loc_113 : location_info := LocationInfo file_0 91 9 91 10.
Definition loc_114 : location_info := LocationInfo file_0 91 9 91 10.
Definition loc_115 : location_info := LocationInfo file_0 90 12 90 27.
Definition loc_116 : location_info := LocationInfo file_0 90 20 90 27.
Definition loc_117 : location_info := LocationInfo file_0 90 21 90 22.
Definition loc_118 : location_info := LocationInfo file_0 90 21 90 22.
Definition loc_119 : location_info := LocationInfo file_0 90 25 90 26.
Definition loc_122 : location_info := LocationInfo file_0 89 16 89 29.
Definition loc_123 : location_info := LocationInfo file_0 89 28 89 29.
Definition loc_124 : location_info := LocationInfo file_0 89 28 89 29.
Definition loc_129 : location_info := LocationInfo file_0 99 2 99 30.
Definition loc_130 : location_info := LocationInfo file_0 100 2 100 27.
Definition loc_131 : location_info := LocationInfo file_0 101 2 101 52.
Definition loc_132 : location_info := LocationInfo file_0 101 9 101 51.
Definition loc_133 : location_info := LocationInfo file_0 101 35 101 38.
Definition loc_134 : location_info := LocationInfo file_0 101 35 101 38.
Definition loc_135 : location_info := LocationInfo file_0 101 47 101 50.
Definition loc_136 : location_info := LocationInfo file_0 101 47 101 50.
Definition loc_137 : location_info := LocationInfo file_0 100 11 100 26.
Definition loc_138 : location_info := LocationInfo file_0 100 19 100 26.
Definition loc_139 : location_info := LocationInfo file_0 100 20 100 21.
Definition loc_140 : location_info := LocationInfo file_0 100 20 100 21.
Definition loc_141 : location_info := LocationInfo file_0 100 24 100 25.
Definition loc_144 : location_info := LocationInfo file_0 99 16 99 29.
Definition loc_145 : location_info := LocationInfo file_0 99 28 99 29.
Definition loc_146 : location_info := LocationInfo file_0 99 28 99 29.
Definition loc_151 : location_info := LocationInfo file_0 110 2 110 30.
Definition loc_152 : location_info := LocationInfo file_0 111 2 111 20.
Definition loc_153 : location_info := LocationInfo file_0 112 2 112 13.
Definition loc_154 : location_info := LocationInfo file_0 113 2 113 11.
Definition loc_155 : location_info := LocationInfo file_0 113 9 113 10.
Definition loc_156 : location_info := LocationInfo file_0 113 9 113 10.
Definition loc_157 : location_info := LocationInfo file_0 112 10 112 12.
Definition loc_158 : location_info := LocationInfo file_0 112 10 112 12.
Definition loc_159 : location_info := LocationInfo file_0 112 11 112 12.
Definition loc_160 : location_info := LocationInfo file_0 112 11 112 12.
Definition loc_163 : location_info := LocationInfo file_0 111 11 111 19.
Definition loc_164 : location_info := LocationInfo file_0 111 18 111 19.
Definition loc_165 : location_info := LocationInfo file_0 111 18 111 19.
Definition loc_168 : location_info := LocationInfo file_0 110 16 110 29.
Definition loc_169 : location_info := LocationInfo file_0 110 28 110 29.
Definition loc_170 : location_info := LocationInfo file_0 110 28 110 29.
Definition loc_175 : location_info := LocationInfo file_0 122 2 122 30.
Definition loc_176 : location_info := LocationInfo file_0 123 2 123 26.
Definition loc_177 : location_info := LocationInfo file_0 124 2 124 49.
Definition loc_178 : location_info := LocationInfo file_0 125 2 125 13.
Definition loc_179 : location_info := LocationInfo file_0 126 2 126 11.
Definition loc_180 : location_info := LocationInfo file_0 126 9 126 10.
Definition loc_181 : location_info := LocationInfo file_0 126 9 126 10.
Definition loc_182 : location_info := LocationInfo file_0 125 10 125 12.
Definition loc_183 : location_info := LocationInfo file_0 125 10 125 12.
Definition loc_184 : location_info := LocationInfo file_0 125 11 125 12.
Definition loc_185 : location_info := LocationInfo file_0 125 11 125 12.
Definition loc_188 : location_info := LocationInfo file_0 124 2 124 3.
Definition loc_189 : location_info := LocationInfo file_0 124 6 124 48.
Definition loc_190 : location_info := LocationInfo file_0 124 32 124 35.
Definition loc_191 : location_info := LocationInfo file_0 124 32 124 35.
Definition loc_192 : location_info := LocationInfo file_0 124 44 124 47.
Definition loc_193 : location_info := LocationInfo file_0 124 44 124 47.
Definition loc_194 : location_info := LocationInfo file_0 123 11 123 25.
Definition loc_195 : location_info := LocationInfo file_0 123 18 123 25.
Definition loc_196 : location_info := LocationInfo file_0 123 19 123 20.
Definition loc_197 : location_info := LocationInfo file_0 123 19 123 20.
Definition loc_198 : location_info := LocationInfo file_0 123 23 123 24.
Definition loc_201 : location_info := LocationInfo file_0 122 16 122 29.
Definition loc_202 : location_info := LocationInfo file_0 122 28 122 29.
Definition loc_203 : location_info := LocationInfo file_0 122 28 122 29.
Definition loc_208 : location_info := LocationInfo file_0 135 2 135 30.
Definition loc_209 : location_info := LocationInfo file_0 136 2 136 80.
Definition loc_210 : location_info := LocationInfo file_0 137 2 137 12.
Definition loc_211 : location_info := LocationInfo file_0 137 9 137 11.
Definition loc_212 : location_info := LocationInfo file_0 137 9 137 11.
Definition loc_213 : location_info := LocationInfo file_0 137 10 137 11.
Definition loc_214 : location_info := LocationInfo file_0 137 10 137 11.
Definition loc_215 : location_info := LocationInfo file_0 136 11 136 79.
Definition loc_216 : location_info := LocationInfo file_0 136 37 136 40.
Definition loc_217 : location_info := LocationInfo file_0 136 37 136 40.
Definition loc_218 : location_info := LocationInfo file_0 136 62 136 78.
Definition loc_219 : location_info := LocationInfo file_0 136 70 136 77.
Definition loc_220 : location_info := LocationInfo file_0 136 71 136 72.
Definition loc_221 : location_info := LocationInfo file_0 136 71 136 72.
Definition loc_222 : location_info := LocationInfo file_0 136 75 136 76.
Definition loc_225 : location_info := LocationInfo file_0 135 16 135 29.
Definition loc_226 : location_info := LocationInfo file_0 135 28 135 29.
Definition loc_227 : location_info := LocationInfo file_0 135 28 135 29.
Definition loc_232 : location_info := LocationInfo file_0 146 2 146 30.
Definition loc_233 : location_info := LocationInfo file_0 147 2 147 26.
Definition loc_234 : location_info := LocationInfo file_0 148 2 148 55.
Definition loc_235 : location_info := LocationInfo file_0 148 9 148 54.
Definition loc_236 : location_info := LocationInfo file_0 148 9 148 54.
Definition loc_237 : location_info := LocationInfo file_0 148 10 148 54.
Definition loc_238 : location_info := LocationInfo file_0 148 37 148 40.
Definition loc_239 : location_info := LocationInfo file_0 148 37 148 40.
Definition loc_240 : location_info := LocationInfo file_0 148 49 148 52.
Definition loc_241 : location_info := LocationInfo file_0 148 49 148 52.
Definition loc_242 : location_info := LocationInfo file_0 147 11 147 25.
Definition loc_243 : location_info := LocationInfo file_0 147 18 147 25.
Definition loc_244 : location_info := LocationInfo file_0 147 19 147 20.
Definition loc_245 : location_info := LocationInfo file_0 147 19 147 20.
Definition loc_246 : location_info := LocationInfo file_0 147 23 147 24.
Definition loc_249 : location_info := LocationInfo file_0 146 16 146 29.
Definition loc_250 : location_info := LocationInfo file_0 146 28 146 29.
Definition loc_251 : location_info := LocationInfo file_0 146 28 146 29.
Definition loc_256 : location_info := LocationInfo file_0 156 2 156 28.
Definition loc_257 : location_info := LocationInfo file_0 157 2 157 54.
Definition loc_258 : location_info := LocationInfo file_0 157 9 157 53.
Definition loc_259 : location_info := LocationInfo file_0 157 36 157 39.
Definition loc_260 : location_info := LocationInfo file_0 157 36 157 39.
Definition loc_261 : location_info := LocationInfo file_0 157 48 157 51.
Definition loc_262 : location_info := LocationInfo file_0 157 48 157 51.
Definition loc_263 : location_info := LocationInfo file_0 156 12 156 27.
Definition loc_264 : location_info := LocationInfo file_0 156 20 156 27.
Definition loc_265 : location_info := LocationInfo file_0 156 21 156 22.
Definition loc_266 : location_info := LocationInfo file_0 156 21 156 22.
Definition loc_267 : location_info := LocationInfo file_0 156 25 156 26.
(* Definition of function [int_ptr]. *)
Definition impl_int_ptr : function := {|
(* Definition of function [int_ptr1]. *)
Definition impl_int_ptr1 : function := {|
f_args := [
("p", void*)
];
......@@ -134,8 +220,46 @@ Section code.
)%E
|}.