Skip to content

Move Spec lifters out of Constraints#1575

Merged
michael-schwarz merged 18 commits intomasterfrom
constraints-split
Sep 24, 2024
Merged

Move Spec lifters out of Constraints#1575
michael-schwarz merged 18 commits intomasterfrom
constraints-split

Conversation

@sim642
Copy link
Copy Markdown
Member

@sim642 sim642 commented Sep 24, 2024

They are moved to a new lifters directory.

The splitting is done such that git blame history is preserved for default git settings. Thus the git graph is a bit of a braid.

@sim642 sim642 added the cleanup Refactoring, clean-up label Sep 24, 2024
@sim642 sim642 added this to the v2.5.0 milestone Sep 24, 2024
| Target (target_node, target_context) ->
let target_fundec = Node.find_fundec target_node in
if CilType.Fundec.equal target_fundec current_fundec && ControlSpecC.equal target_context (ctx.control_context ()) then (
if M.tracing then Messages.tracel "longjmp" "Fun: Potentially from same context, side-effect to %a" Node.pretty target_node;

Check warning

Code scanning / Semgrep OSS

Semgrep Finding: semgrep.trace-not-in-tracing

trace functions should only be called if tracing is enabled at compile time
(* Eval `env` again to avoid having to construct bespoke ctx to ask *)
let targets = path_ctx.ask (EvalJumpBuf env) in
let valid_targets = path_ctx.ask ValidLongJmp in
if M.tracing then Messages.tracel "longjmp" "Jumping to %a" JmpBufDomain.JmpBufSet.pretty targets;

Check warning

Code scanning / Semgrep OSS

Semgrep Finding: semgrep.trace-not-in-tracing

trace functions should only be called if tracing is enabled at compile time
| Target (target_node, target_context) ->
let target_fundec = Node.find_fundec target_node in
if CilType.Fundec.equal target_fundec current_fundec && ControlSpecC.equal target_context (ctx.control_context ()) then (
if M.tracing then Messages.tracel "longjmp" "Potentially from same context, side-effect to %a" Node.pretty target_node;

Check warning

Code scanning / Semgrep OSS

Semgrep Finding: semgrep.trace-not-in-tracing

trace functions should only be called if tracing is enabled at compile time
ctx.sideg (V.longjmpto (target_node, ctx.context ())) (G.create_local (Lazy.force specialed))
)
else if JmpBufDomain.JmpBufSet.mem target valid_targets then (
if M.tracing then Messages.tracel "longjmp" "Longjmp to somewhere else, side-effect to %i" (S.C.hash (ctx.context ()));

Check warning

Code scanning / Semgrep OSS

Semgrep Finding: semgrep.trace-not-in-tracing

trace functions should only be called if tracing is enabled at compile time
@michael-schwarz
Copy link
Copy Markdown
Member

Nice! I think this is a really good step towards making modules shorter and easier to follow!

@michael-schwarz michael-schwarz merged commit 568492c into master Sep 24, 2024
@michael-schwarz michael-schwarz deleted the constraints-split branch September 24, 2024 13:18
sim642 added a commit to sim642/opam-repository that referenced this pull request Nov 28, 2024
CHANGES:

Functionally equivalent to Goblint in SV-COMP 2025.

* Add 32bit vs 64bit architecture support (goblint/analyzer#54, goblint/analyzer#1574).
* Add per-function context gas analysis (goblint/analyzer#1569, goblint/analyzer#1570, goblint/analyzer#1598).
* Adapt automatic static loop unrolling (goblint/analyzer#1516, goblint/analyzer#1582, goblint/analyzer#1583, goblint/analyzer#1584, goblint/analyzer#1590, goblint/analyzer#1595, goblint/analyzer#1599).
* Adapt automatic configuration tuning (goblint/analyzer#1450, goblint/analyzer#1612, goblint/analyzer#1181, goblint/analyzer#1604).
* Simplify non-relational integer invariants in witnesses (goblint/analyzer#1517).
* Fix excessive hash collisions (goblint/analyzer#1594, goblint/analyzer#1602).
* Clean up various code (goblint/analyzer#1095, goblint/analyzer#1523, goblint/analyzer#1554, goblint/analyzer#1575, goblint/analyzer#1588, goblint/analyzer#1597, goblint/analyzer#1614).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cleanup Refactoring, clean-up

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants