-
Notifications
You must be signed in to change notification settings - Fork 44
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
Support up to LLVM 14 #1083
Support up to LLVM 14 #1083
Conversation
This is a minor rewrite of the logic used to check for Clang version ranges in `crux-llvm` test cases. The new approach is similar to Case 3/3a from this `tasty-sugar` document: https://github.com/kquick/tasty-sugar/blob/1fc06bee124e02f49f6478bc1e1df13704cc4916/Ranges.org#case-3---explicit-and-a-weaker-match In particular: * We have adopted the convention that the test output for the most recent version of Clang is always contained in a bare `.good` file. * There are no longer any `at-least-clang*` files, just `pre-clang*`. This greatly simplifies the number of cases to consider and the number of checks to implement. * We now skip test configurations by having `SKIP_TEST` as the first line of the `.good` file. Again, this greatly simplifies the logic needed to skip test cases on certain configurations.
This adds support for LLVM versions up to 14 by: * Bumping the `llvm-pretty` submodule to bring in the changes from GaloisInc/llvm-pretty#109. * Bumping the `llvm-pretty-bc-parser` submodule to bring in the changes from GaloisInc/llvm-pretty-bc-parser#219. * Updating the test output in `crux-llvm` and `uc-crux-llvm`'s test suites accordingly.
Somewhat surprisingly, two test configurations fail with these
|
We have seen Clang version numbers like `12.0.0-3ubuntu1~20.04.5` in the wild, which the `versions` library has a difficult time parsing. To avoid this, we scrub out uses of the `~` character, which is the thing that trips up the parser. A bit ad hoc, but oh well.
This adds support for LLVM versions up to 14 by: * Bumping the `llvm-pretty` submodule to bring in the changes from GaloisInc/llvm-pretty#109. * Bumping the `llvm-pretty-bc-parser` submodule to bring in the changes from GaloisInc/llvm-pretty-bc-parser#219. * Bumping the `crucible` submodule to bring in the changes from GaloisInc/crucible#1083. * Updating the surrounding documentation accordingly.
This is a minor rewrite of the logic used to check for LLVM version ranges in `disasm-llvm` test cases. The new approach is similar to Case 3/3a from this `tasty-sugar` document: https://github.com/kquick/tasty-sugar/blob/1fc06bee124e02f49f6478bc1e1df13704cc4916/Ranges.org#case-3---explicit-and-a-weak atch In particular: * We have adopted the convention that the test output for the most recent version of LLVM is always contained in a bare `.ll` file. * There are no longer any `at-least-llvm*` files, just `pre-llvm*`. This greatly simplifies the number of cases to consider and the number of checks to implement. * We now skip test configurations by having `SKIP_TEST` as the first line of the `.ll` file. Again, this greatly simplifies the logic needed to skip test cases on certain configurations. This is heavily inspired by a similar change made in GaloisInc/crucible#1083.
This is a minor rewrite of the logic used to check for LLVM version ranges in `disasm-llvm` test cases. The new approach is similar to Case 3/3a from this `tasty-sugar` document: https://github.com/kquick/tasty-sugar/blob/1fc06bee124e02f49f6478bc1e1df13704cc4916/Ranges.org#case-3---explicit-and-a-weaker-match In particular: * We have adopted the convention that the test output for the most recent version of LLVM is always contained in a bare `.ll` file. * There are no longer any `at-least-llvm*` files, just `pre-llvm*`. This greatly simplifies the number of cases to consider and the number of checks to implement. * We now skip test configurations by having `SKIP_TEST` as the first line of the `.ll` file. Again, this greatly simplifies the logic needed to skip test cases on certain configurations. This is heavily inspired by a similar change made in GaloisInc/crucible#1083.
This is a minor rewrite of the logic used to check for LLVM version ranges in `disasm-llvm` test cases. The new approach is similar to Case 3/3a from this `tasty-sugar` document: https://github.com/kquick/tasty-sugar/blob/1fc06bee124e02f49f6478bc1e1df13704cc4916/Ranges.org#case-3---explicit-and-a-weaker-match In particular: * We have adopted the convention that the test output for the most recent version of LLVM is always contained in a bare `.ll` file. * There are no longer any `at-least-llvm*` files, just `pre-llvm*`. This greatly simplifies the number of cases to consider and the number of checks to implement. * We now skip test configurations by having `SKIP_TEST` as the first line of the `.ll` file. Again, this greatly simplifies the logic needed to skip test cases on certain configurations. This is heavily inspired by a similar change made in GaloisInc/crucible#1083.
This adds support for LLVM versions up to 14 by: * Bumping the `llvm-pretty` submodule to bring in the changes from GaloisInc/llvm-pretty#109. * Bumping the `llvm-pretty-bc-parser` submodule to bring in the changes from GaloisInc/llvm-pretty-bc-parser#219. * Bumping the `crucible` submodule to bring in the changes from GaloisInc/crucible#1083. * Updating the surrounding documentation accordingly.
This adds support for LLVM versions up to 14 by:
llvm-pretty
submodule to bring in the changes from Support metadata fields added in LLVM 14 llvm-pretty#109.llvm-pretty-bc-parser
submodule to bring in the changes from Support LLVM 14 llvm-pretty-bc-parser#219.crux-llvm
anduc-crux-llvm
's test suites accordingly.In order to adapt to various test cases' output changing with Clang 13 and 14, I needed to do a minor rewrite of the way Clang version ranges are handled in
crux-llvm
's test suite. See thecrux-llvm/test/README.md
file for a description of the new conventions that are currently in use.