Skip to content

Commit b129fab

Browse files
committed
Merge branch 'v2.4.x'
2 parents a592680 + 0ad776f commit b129fab

File tree

10 files changed

+39
-23
lines changed

10 files changed

+39
-23
lines changed

.github/workflows/unlocked.yml

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ jobs:
3333
- os: ubuntu-latest
3434
ocaml-compiler: 4.14.x
3535
z3: true
36+
- os: macos-latest
37+
ocaml-compiler: 4.14.x
3638

3739
# customize name to use readable string for apron instead of just a boolean
3840
# workaround for missing ternary operator: https://github.com/actions/runner/issues/409

CHANGELOG.md

+19
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
## v2.4.0
2+
* Remove unmaintained analyses: spec, file (#1281).
3+
* Add linear two-variable equalities analysis (#1297, #1412, #1466).
4+
* Add callstring, loopfree callstring and context gas analyses (#1038, #1340, #1379, #1427, #1439).
5+
* Add non-relational thread-modular value analyses with thread IDs (#1366, #1398, #1399).
6+
* Add NULL byte array domain (#1076).
7+
* Fix spurious overflow warnings from internal evaluations (#1406, #1411, #1511).
8+
* Refactor non-definite mutex handling to fix unsoundness (#1430, #1500, #1503, #1409).
9+
* Fix non-relational thread-modular value analysis unsoundness with ambiguous points-to sets (#1457, #1458).
10+
* Fix mutex type analysis unsoundness and enable it by default (#1414, #1416, #1510).
11+
* Add points-to set refinement on mutex path splitting (#1287, #1343, #1374, #1396, #1407).
12+
* Improve narrowing operators (#1502, #1540, #1543).
13+
* Extract automatic configuration tuning for soundness (#1369).
14+
* Fix many locations in witnesses (#1355, #1372, #1400, #1403).
15+
* Improve output readability (#1294, #1312, #1405, #1497).
16+
* Refactor logging (#1117).
17+
* Modernize all library function specifications (#1029, #688, #1174, #1289, #1447, #1487).
18+
* Remove OCaml 4.10, 4.11, 4.12 and 4.13 support (#1448).
19+
120
## v2.3.0
221
Functionally equivalent to Goblint in SV-COMP 2024.
322

bench/basic/benchSet.ml

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ let () =
7373
]
7474
);
7575
"const" @> lazy (
76-
let args = ((fun x -> 42), set1) in
76+
let args = ((fun _ -> 42), set1) in
7777
throughputN 1 [
7878
("map1", map1, args);
7979
("map2", map2, args);

dune-project

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Goblint includes analyses for assertions, overflows, deadlocks, etc and can be e
3737
"concurrency"))
3838
(depends
3939
(ocaml (>= 4.14))
40-
(goblint-cil (>= 2.0.3)) ; TODO no way to define as pin-depends? Used goblint.opam.template to add it for now. https://github.com/ocaml/dune/issues/3231. Alternatively, removing this line and adding cil as a git submodule and `(vendored_dirs cil)` as ./dune also works. This way, no more need to reinstall the pinned cil opam package on changes. However, then cil is cleaned and has to be rebuild together with goblint.
40+
(goblint-cil (>= 2.0.4)) ; TODO no way to define as pin-depends? Used goblint.opam.template to add it for now. https://github.com/ocaml/dune/issues/3231. Alternatively, removing this line and adding cil as a git submodule and `(vendored_dirs cil)` as ./dune also works. This way, no more need to reinstall the pinned cil opam package on changes. However, then cil is cleaned and has to be rebuild together with goblint.
4141
(batteries (>= 3.5.1))
4242
(zarith (>= 1.10))
4343
(yojson (>= 2.0.0))

goblint.opam

+6-6
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ bug-reports: "https://github.com/goblint/analyzer/issues"
3737
depends: [
3838
"dune" {>= "3.7"}
3939
"ocaml" {>= "4.14"}
40-
"goblint-cil" {>= "2.0.3"}
40+
"goblint-cil" {>= "2.0.4"}
4141
"batteries" {>= "3.5.1"}
4242
"zarith" {>= "1.10"}
4343
"yojson" {>= "2.0.0"}
@@ -93,11 +93,11 @@ build: [
9393
dev-repo: "git+https://github.com/goblint/analyzer.git"
9494
# on `dune build` goblint.opam will be generated from goblint.opam.template and dune-project
9595
# also remember to generate/adjust goblint.opam.locked!
96-
available: os-distribution != "alpine" & arch != "arm64"
97-
pin-depends: [
98-
# published goblint-cil 2.0.3 is currently up-to-date, so no pin needed
99-
[ "goblint-cil.2.0.3" "git+https://github.com/goblint/cil.git#ae3a4949d478fad77e004c6fe15a7c83427df59f" ]
100-
]
96+
available: os-family != "bsd" & os-distribution != "alpine"
97+
# pin-depends: [
98+
# published goblint-cil 2.0.4 is currently up-to-date, so no pin needed
99+
# [ "goblint-cil.2.0.3" "git+https://github.com/goblint/cil.git#ae3a4949d478fad77e004c6fe15a7c83427df59f" ]
100+
# ]
101101
depexts: [
102102
["libgraph-easy-perl"] {os-distribution = "ubuntu" & with-test}
103103
]

goblint.opam.locked

+2-9
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ depends: [
6464
"fileutils" {= "0.6.4"}
6565
"fmt" {= "0.9.0"}
6666
"fpath" {= "0.7.3"}
67-
"goblint-cil" {= "2.0.3"}
67+
"goblint-cil" {= "2.0.4"}
6868
"hex" {= "1.5.0"}
6969
"integers" {= "0.7.0"}
7070
"json-data-encoding" {= "1.0.1"}
@@ -128,21 +128,14 @@ build: [
128128
["dune" "install" "-p" name "--create-install-files" name]
129129
]
130130
dev-repo: "git+https://github.com/goblint/analyzer.git"
131-
available: os-distribution != "alpine" & arch != "arm64"
131+
available: os-family != "bsd" & os-distribution != "alpine"
132132
conflicts: [
133133
"result" {< "1.5"}
134134
"ez-conf-lib" {= "1"}
135135
]
136136
post-messages: [
137137
"Do not benchmark Goblint on OCaml 5 (https://goblint.readthedocs.io/en/latest/user-guide/benchmarking/)." {ocaml:version >= "5.0.0"}
138138
]
139-
# TODO: manually reordered to avoid opam pin crash: https://github.com/ocaml/opam/issues/4936
140-
pin-depends: [
141-
[
142-
"goblint-cil.2.0.3"
143-
"git+https://github.com/goblint/cil.git#ae3a4949d478fad77e004c6fe15a7c83427df59f"
144-
]
145-
]
146139
depexts: ["libgraph-easy-perl"] {os-distribution = "ubuntu" & with-test}
147140
description: """\
148141
Goblint is a sound static analysis framework for C programs using abstract interpretation.

goblint.opam.template

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# on `dune build` goblint.opam will be generated from goblint.opam.template and dune-project
22
# also remember to generate/adjust goblint.opam.locked!
3-
available: os-distribution != "alpine" & arch != "arm64"
4-
pin-depends: [
5-
# published goblint-cil 2.0.3 is currently up-to-date, so no pin needed
6-
[ "goblint-cil.2.0.3" "git+https://github.com/goblint/cil.git#ae3a4949d478fad77e004c6fe15a7c83427df59f" ]
7-
]
3+
available: os-family != "bsd" & os-distribution != "alpine"
4+
# pin-depends: [
5+
# published goblint-cil 2.0.4 is currently up-to-date, so no pin needed
6+
# [ "goblint-cil.2.0.3" "git+https://github.com/goblint/cil.git#ae3a4949d478fad77e004c6fe15a7c83427df59f" ]
7+
# ]
88
depexts: [
99
["libgraph-easy-perl"] {os-distribution = "ubuntu" & with-test}
1010
]

gobview

src/common/util/cilType.ml

+1
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,7 @@ struct
698698
| AAddrOf of t
699699
| AIndex of t * t
700700
| AQuestion of t * t * t
701+
| AAssign of t * t
701702
[@@deriving eq, ord, hash]
702703

703704
let name () = "attrparam"

src/incremental/compareAST.ml

+1
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ and eq_attrparam (a: attrparam) (b: attrparam) ~(rename_mapping: rename_mapping)
210210
| AAddrOf attrparam1, AAddrOf attrparam2 -> eq_attrparam attrparam1 attrparam2 ~rename_mapping ~acc
211211
| AIndex (left1, right1), AIndex (left2, right2) -> eq_attrparam left1 left2 ~rename_mapping ~acc &&>> eq_attrparam right1 right2 ~acc
212212
| AQuestion (left1, middle1, right1), AQuestion (left2, middle2, right2) -> eq_attrparam left1 left2 ~rename_mapping ~acc &&>> eq_attrparam middle1 middle2 ~acc &&>> eq_attrparam right1 right2 ~acc
213+
| AAssign (left1, right1), AAssign (left2, right2) -> eq_attrparam left1 left2 ~rename_mapping ~acc &&>> eq_attrparam right1 right2 ~acc
213214
| a, b -> a = b, rename_mapping
214215

215216
and eq_attribute (a: attribute) (b: attribute) ~(acc: (typ * typ) list) ~(rename_mapping: rename_mapping) = match a, b with

0 commit comments

Comments
 (0)