-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
crucible-llvm: Annotate errors with call stacks #914
Conversation
Glancing through the code, I don't see where the callstacks are generated from. Are they just compute from the sequence of pushed frames in the memory? |
This PR highlights something that I think we'll need to address going forward as we refactor the memory model. Right now, the memory is tightly coupled with a program's control flow via the |
This isn't useful on its own, but will support later commits which will annotate structured LLVM errors with callstacks.
fee59a5
to
388ef83
Compare
The only remaining CI failure seems unrelated (it's during installation of Nix). |
Sigh. It looks like NixOS/nix#3605 is biting again. |
388ef83
to
57a597d
Compare
This bumps the `crucible` submodule to include GaloisInc/crucible#914. This also bumps the `macaw` submodule to include GaloisInc/macaw#244, which adapts `macaw-symbolic` to the `crucible` changes. These `crucible` changes require some tweaks in the following libraries: * In `heapster-saw`, we need to add a `NuMatching1` instance for `GlobalVar` now that `LLVM_SideConditions` has a field of type `GlobalVar Mem`. This also requires defining an opaque `NuMatching` instance for `Nonce` to support the `NuMatching1` instance for `GlobalVar`. Elsewhere in `heapster-saw`, we need to adapt a pattern match on `LLVM_SideConditions` to accommodate its new field. * In `saw-script`, we need to make sure that `?recordLLVMAnnotation` is given three arguments, not two, so that its type matches what `HasLLVMAnn` expects.
This bumps the `crucible` submodule to include GaloisInc/crucible#914. This also bumps the `macaw` submodule to include GaloisInc/macaw#244, which adapts `macaw-symbolic` to the `crucible` changes. These `crucible` changes require some tweaks in the following libraries: * In `heapster-saw`, we need to add a `NuMatching1` instance for `GlobalVar` now that `LLVM_SideConditions` has a field of type `GlobalVar Mem`. This also requires defining an opaque `NuMatching` instance for `Nonce` to support the `NuMatching1` instance for `GlobalVar`. Elsewhere in `heapster-saw`, we need to adapt a pattern match on `LLVM_SideConditions` to accommodate its new field. * In `saw-script`, we need to make sure that `?recordLLVMAnnotation` is given three arguments, not two, so that its type matches what `HasLLVMAnn` expects.
This bumps the `crucible` submodule to include GaloisInc/crucible#914. This also bumps the `macaw` submodule to include GaloisInc/macaw#244, which adapts `macaw-symbolic` to the `crucible` changes. These `crucible` changes require some tweaks in the following libraries: * In `heapster-saw`, we need to add a `NuMatching1` instance for `GlobalVar` now that `LLVM_SideConditions` has a field of type `GlobalVar Mem`. This also requires defining an opaque `NuMatching` instance for `Nonce` to support the `NuMatching1` instance for `GlobalVar`. Elsewhere in `heapster-saw`, we need to adapt a pattern match on `LLVM_SideConditions` to accommodate its new field. * In `saw-script`, we need to make sure that `?recordLLVMAnnotation` is given three arguments, not two, so that its type matches what `HasLLVMAnn` expects.
Submodules: Adapt to GaloisInc/crucible#914, GaloisInc/crucible#906, and GaloisInc/crucible#928
Fixing `T847-fail2` is as simple as accepting the new output resulting from #914. Fixing `invoke-test` requires updating the LLVM to use `sret` syntax specific to LLVM 12 or later. (See https://releases.llvm.org/12.0.0/docs/LangRef.html#parameter-attributes). As a result, this test is now only ran on Clang 12 or later. Fixes #977.
Fixing `T847-fail2` is as simple as accepting the new output resulting from #914. Fixing `invoke-test` requires updating the LLVM to use `sret` syntax specific to LLVM 12 or later. (See https://releases.llvm.org/12.0.0/docs/LangRef.html#parameter-attributes). As a result, this test is now only ran on Clang 12 or later. Fixes #977.
Still WIP, since: