Skip to content

Commit f49e806

Browse files
Merge branch 'master' into feature/divide-and-narrow
2 parents 5037570 + 153ce28 commit f49e806

File tree

163 files changed

+10001
-6833
lines changed

Some content is hidden

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

163 files changed

+10001
-6833
lines changed

.git-blame-ignore-revs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,6 @@ c3e2cc848479ae86de5542b6ab0e75a74e9cf8c9
3737

3838
# Fix LibraryFunctions.invalidate_actions indentation
3939
5662024232f32fe74dd25c9317dee4436ecb212d
40+
41+
# Rename ctx -> man
42+
0c155e68607fede6fab17704a9a7aee38df5408e

docs/artifact-descriptions/vmcai25.md

Lines changed: 298 additions & 0 deletions
Large diffs are not rendered by default.

dune-project

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Goblint includes analyses for assertions, overflows, deadlocks, etc and can be e
5858
(sha (>= 1.12))
5959
(fileutils (>= 0.6.4))
6060
cpu
61-
arg-complete
61+
(arg-complete (>= 0.2.1))
6262
(yaml (>= 3.0.0))
6363
uuidm
6464
catapult

goblint.opam

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ depends: [
5858
"sha" {>= "1.12"}
5959
"fileutils" {>= "0.6.4"}
6060
"cpu"
61-
"arg-complete"
61+
"arg-complete" {>= "0.2.1"}
6262
"yaml" {>= "3.0.0"}
6363
"uuidm"
6464
"catapult"
@@ -98,7 +98,7 @@ dev-repo: "git+https://github.com/goblint/analyzer.git"
9898
available: os-family != "bsd" & os-distribution != "alpine" & (arch != "arm64" | os = "macos")
9999
pin-depends: [
100100
# published goblint-cil 2.0.5 is currently up-to-date, but pinned for reproducibility
101-
[ "goblint-cil.2.0.5" "git+https://github.com/goblint/cil.git#c79208b21ea61d7b72eae29a18c1ddeda4795dfd" ]
101+
[ "goblint-cil.2.0.5" "git+https://github.com/goblint/cil.git#f5ee39bd344dc74e2a10e407d877e0ddf73c9c6f" ]
102102
# pinned for stability (https://github.com/goblint/analyzer/issues/1520), remove after new camlidl release
103103
[ "camlidl.1.12" "git+https://github.com/xavierleroy/camlidl.git#1c1e87e3f56c2c6b3226dd0af3510ef414b462d0" ]
104104
# pinned for stability (https://github.com/goblint/analyzer/issues/1520), remove after new apron release

goblint.opam.locked

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ bug-reports: "https://github.com/goblint/analyzer/issues"
2424
depends: [
2525
"angstrom" {= "0.16.0"}
2626
"apron" {= "v0.9.15"}
27-
"arg-complete" {= "0.1.0"}
27+
"arg-complete" {= "0.2.1"}
2828
"astring" {= "0.8.5"}
2929
"base-bigarray" {= "base"}
3030
"base-bytes" {= "base"}
@@ -140,7 +140,7 @@ post-messages: [
140140
pin-depends: [
141141
[
142142
"goblint-cil.2.0.5"
143-
"git+https://github.com/goblint/cil.git#c79208b21ea61d7b72eae29a18c1ddeda4795dfd"
143+
"git+https://github.com/goblint/cil.git#f5ee39bd344dc74e2a10e407d877e0ddf73c9c6f"
144144
]
145145
[
146146
"camlidl.1.12"

goblint.opam.template

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
available: os-family != "bsd" & os-distribution != "alpine" & (arch != "arm64" | os = "macos")
44
pin-depends: [
55
# published goblint-cil 2.0.5 is currently up-to-date, but pinned for reproducibility
6-
[ "goblint-cil.2.0.5" "git+https://github.com/goblint/cil.git#c79208b21ea61d7b72eae29a18c1ddeda4795dfd" ]
6+
[ "goblint-cil.2.0.5" "git+https://github.com/goblint/cil.git#f5ee39bd344dc74e2a10e407d877e0ddf73c9c6f" ]
77
# pinned for stability (https://github.com/goblint/analyzer/issues/1520), remove after new camlidl release
88
[ "camlidl.1.12" "git+https://github.com/xavierleroy/camlidl.git#1c1e87e3f56c2c6b3226dd0af3510ef414b462d0" ]
99
# pinned for stability (https://github.com/goblint/analyzer/issues/1520), remove after new apron release

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,4 @@ nav:
4141
- "🇸 SAS '21": artifact-descriptions/sas21.md
4242
- "🇪 ESOP '23": artifact-descriptions/esop23.md
4343
- "🇻 VMCAI '24": artifact-descriptions/vmcai24.md
44+
- "🇻 VMCAI '25": artifact-descriptions/vmcai25.md

scripts/bash-completion.sh

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,27 @@
66
# Permanent usage:
77
# Run: echo "source $(readlink -f .)/scripts/bash-completion.sh" >> ~/.bash_completion
88

9+
# Bypass = in COMP_WORDBREAKS (https://stackoverflow.com/a/57437406/854540)
10+
# Copied & modified from standard __ltrim_colon_completions
11+
__ltrim_equal_completions()
12+
{
13+
if [[ $1 == *=* && $COMP_WORDBREAKS == *=* ]]; then
14+
# Remove equal-word prefix from COMPREPLY items
15+
local equal_word=${1%"${1##*=}"}
16+
local i=${#COMPREPLY[*]}
17+
while ((i-- > 0)); do
18+
COMPREPLY[i]=${COMPREPLY[i]#"$equal_word"}
19+
done
20+
fi
21+
}
22+
923
_goblint ()
1024
{
1125
IFS=$'\n'
12-
COMPREPLY=($(${COMP_WORDS[0]} --complete "${COMP_WORDS[@]:1:COMP_CWORD}"))
26+
local words cword cur
27+
_get_comp_words_by_ref -n = cur words cword # Bypass = in COMP_WORDBREAKS (https://stackoverflow.com/a/57437406/854540)
28+
COMPREPLY=($(${words[0]} --complete "${words[@]:1:cword}"))
29+
__ltrim_equal_completions "$cur" # Bypass = in COMP_WORDBREAKS (https://stackoverflow.com/a/57437406/854540)
1330
}
1431

1532
complete -o default -F _goblint goblint
@@ -26,7 +43,10 @@ _regtest ()
2643
COMPREPLY=($(ls -1 tests/regression/${COMP_WORDS[1]}-* | sed -n -r 's/([0-9][0-9])-.*/\1/p' | grep "^${COMP_WORDS[2]}"))
2744
;;
2845
*)
29-
COMPREPLY=($($(dirname ${COMP_WORDS[0]})/goblint --complete "${COMP_WORDS[@]:3:COMP_CWORD}"))
46+
local words cword cur
47+
_get_comp_words_by_ref -n = cur words cword # Bypass = in COMP_WORDBREAKS (https://stackoverflow.com/a/57437406/854540)
48+
COMPREPLY=($($(dirname ${words[0]})/goblint --complete "${words[@]:3:cword}"))
49+
__ltrim_equal_completions "$cur" # Bypass = in COMP_WORDBREAKS (https://stackoverflow.com/a/57437406/854540)
3050
;;
3151
esac
3252
}

scripts/goblint-lib-modules.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@
4848

4949
"MessageCategory", # included in Messages
5050
"PreValueDomain", # included in ValueDomain
51+
"IntervalDomain", # included in IntDomain
52+
"IntervalSetDomain", # included in IntDomain
53+
"DefExcDomain", # included in IntDomain
54+
"EnumsDomain", # included in IntDomain
55+
"CongruenceDomain", # included in IntDomain
56+
"IntDomTuple", # included in IntDomain
5157
"WitnessGhostVar", # included in WitnessGhost
5258

5359
"ConfigVersion",

src/analyses/abortUnless.ml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,61 +13,61 @@ struct
1313
module D = BoolDomain.MustBool
1414
module C = Printable.Unit
1515

16-
let context ctx _ _ = ()
16+
let context man _ _ = ()
1717
let startcontext () = ()
1818

1919
(* transfer functions *)
20-
let assign ctx (lval:lval) (rval:exp) : D.t =
20+
let assign man (lval:lval) (rval:exp) : D.t =
2121
false
2222

23-
let branch ctx (exp:exp) (tv:bool) : D.t =
24-
ctx.local
23+
let branch man (exp:exp) (tv:bool) : D.t =
24+
man.local
2525

26-
let body ctx (f:fundec) : D.t =
27-
ctx.local
26+
let body man (f:fundec) : D.t =
27+
man.local
2828

29-
let return ctx (exp:exp option) (f:fundec) : D.t =
30-
if ctx.local then
29+
let return man (exp:exp option) (f:fundec) : D.t =
30+
if man.local then
3131
match f.sformals with
3232
| [arg] when isIntegralType arg.vtype ->
33-
(match ctx.ask (EvalInt (Lval (Var arg, NoOffset))) with
33+
(match man.ask (EvalInt (Lval (Var arg, NoOffset))) with
3434
| v when Queries.ID.is_bot v -> false
3535
| v ->
3636
match Queries.ID.to_bool v with
3737
| Some b -> b
3838
| None -> false)
3939
| _ ->
40-
(* should not happen, ctx.local should always be false in this case *)
40+
(* should not happen, man.local should always be false in this case *)
4141
false
4242
else
4343
false
4444

45-
let enter ctx (lval: lval option) (f:fundec) (args:exp list) : (D.t * D.t) list =
45+
let enter man (lval: lval option) (f:fundec) (args:exp list) : (D.t * D.t) list =
4646
let candidate = match f.sformals with
4747
| [arg] when isIntegralType arg.vtype -> true
4848
| _ -> false
4949
in
5050
[false, candidate]
5151

52-
let combine_env ctx lval fexp f args fc au f_ask =
52+
let combine_env man lval fexp f args fc au f_ask =
5353
if au then (
5454
(* Assert before combine_assign, so if variables in `arg` are assigned to, asserting doesn't unsoundly yield bot *)
5555
(* See test 62/03 *)
5656
match args with
57-
| [arg] -> ctx.emit (Events.Assert arg)
57+
| [arg] -> man.emit (Events.Assert arg)
5858
| _ -> ()
5959
);
6060
false
6161

62-
let combine_assign ctx (lval:lval option) fexp (f:fundec) (args:exp list) fc (au:D.t) (f_ask: Queries.ask) : D.t =
62+
let combine_assign man (lval:lval option) fexp (f:fundec) (args:exp list) fc (au:D.t) (f_ask: Queries.ask) : D.t =
6363
false
6464

65-
let special ctx (lval: lval option) (f:varinfo) (arglist:exp list) : D.t =
65+
let special man (lval: lval option) (f:varinfo) (arglist:exp list) : D.t =
6666
false
6767

6868
let startstate v = false
69-
let threadenter ctx ~multiple lval f args = [false]
70-
let threadspawn ctx ~multiple lval f args fctx = false
69+
let threadenter man ~multiple lval f args = [false]
70+
let threadspawn man ~multiple lval f args fman = false
7171
let exitstate v = false
7272
end
7373

0 commit comments

Comments
 (0)