Skip to content
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: Make a list of libc overrides #1186

Merged

Conversation

langston-barrett
Copy link
Contributor

Before this change, lists of LLVM overrides (e.g., declare_overrides) consisted of libc and LLVM-specific overrides grouped together. Because of the difficulties surrounding "polymorphic" LLVM overrides, they were also only available as OverrideTemplates, which are necessarily dynamic (i.e., are essentially monadic actions in OverrideSim that register the override in question, rather than a data structure describing the override).

Macaw-based Crucible frontends might want to reuse the libc overrides in the context of binaries. This commit separates them out and lists them purely as SomeLLVMOverrides, facilitating this reuse.

Before this change, lists of LLVM overrides (e.g., `declare_overrides`)
consisted of libc and LLVM-specific overrides grouped together. Because
of the difficulties surrounding "polymorphic" LLVM overrides, they
were also only available as `OverrideTemplate`s, which are necessarily
dynamic (i.e., are essentially monadic actions in `OverrideSim`
that register the override in question, rather than a data structure
describing the override).

Macaw-based Crucible frontends might want to reuse the libc overrides in
the context of binaries. This commit separates them out and lists them
purely as `SomeLLVMOverride`s, facilitating this reuse.
Copy link
Contributor

@RyanGlScott RyanGlScott left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I definitely support this direction of travel. I'm somewhat disappointed that this doesn't include the LLVM intrinsics overrides, however. At the very least, could we make a separate list for the simple ones that can be registered with basic_llvm_override?

@langston-barrett
Copy link
Contributor Author

At the very least, could we make a separate list for the simple ones that can be registered with basic_llvm_override?

Will do!

@langston-barrett langston-barrett merged commit 1c6e59e into GaloisInc:master Mar 26, 2024
31 checks passed
@langston-barrett langston-barrett deleted the lb/llvm-monomorphic-ovs branch March 26, 2024 19:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants