Skip to content

Crucible specs should be required to call {llvm,jvm,mir}_execute_func #2506

@sauclovian-g

Description

@sauclovian-g

Currently, at least for LLVM specs, it's possible to write a spec that doesn't actually call llvm_execute_func to run the function it's specified. In most cases this will result in complaints and failure (e.g. unless the function takes no arguments, it's an error to not provide them), but for sufficiently simple functions the verification will succeed.

It isn't clear whether it's possible to concoct an example that produces an incorrect verification success. It's plausible, but it's not worth chasing after: it's overwhelmingly likely that any spec we see that doesn't actually call the function is a mistake, and it should just be prohibited.

I haven't checked if this is actually the same for JVM and MIR specs, but it would be surprising if it weren't.

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs testIssues for which we should add a regression testsubsystem: crucible-jvmIssues related to Java verification with crucible-jvmsubsystem: crucible-llvmIssues related to LLVM bitcode verification with crucible-llvmsubsystem: crucible-mirIssues related to Rust verification with crucible-mir and/or mir-jsontype: bugIssues reporting bugs or unexpected/unwanted behaviorunsoundnessIssues that can lead to unsoundness or false verification

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions