-
Notifications
You must be signed in to change notification settings - Fork 139
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
Wrong handling of i1 in visitCastInst #108
Comments
Nice find! And thanks for all the debug information 😊 I'm wondering if Your example is a really nice candidate for the test suite too. I can add it with the fix. |
I have made PR #110. Let me know it if ok :) |
* This is a temporary fix due to std::iterator depercation. This commit needs to be reverted once a proper fix is in place. * symcc_fuzzing_helper: Move to clap3 (eurecom-s3#94) * Revert "symcc_fuzzing_helper: Move to clap3 (eurecom-s3#94)" (eurecom-s3#101) This reverts commit 88b464c. * Add some FAQs to the Readme * changed from structopt to clap 3 (eurecom-s3#103) * fix for issue eurecom-s3#108 * fix for issue eurecom-s3#108 * LLVM 12 works without changes * Add a clang-format configuration This is just the output of "clang-format -style=llvm -dump-config". * Add support for LLVM 13 Clang now uses the new pass manager for the optimization pipeline, so we have to do the same to make Clang use our pass. Moreover, FileCheck now complains if a configured prefix doesn't appear in the checked file; added "ANY" in three tests where it was missing. Finally, printing arbitrary-precision integers in QSYM needed some changes. * Add support for LLVM 14 * LLVM 15 works without changes * fix issue eurecom-s3#109 * Run clang-format We should really automate this... * Add a GitHub action that checks LLVM compatibility * Prevent test failures in case of reordered solver output Z3 doesn't always output model constants in the same order; make sure that our tests don't depend on it. * Accept symbolic input from memory This commit adds the option to mark symbolic input by calling symcc_make_symbolic from the program under test. The refactoring that was required to add the new feature has had the pleasant side effect that the QSYM backend now doesn't require the entire input upfront anymore, making it much more convenient to feed symbolic data through stdin. * Run GitHub actions for pull requests only No need for "push": the "pull_request" event already triggers when new commits are pushed to the PR branch, and we expect all changes to go through a PR. Co-authored-by: Aurelien Francillon <aurelien.francillon@eurecom.fr> Co-authored-by: Dominik Maier <domenukk@gmail.com> Co-authored-by: aurelf <aurelien@francillon.net> Co-authored-by: Dominik Maier <dmnk@google.com> Co-authored-by: Emilio Coppa <ercoppa@gmail.com> Co-authored-by: Sebastian Poeplau <poeplau@adacore.com>
The interface of the SymCC runtime has changed due to eurecom-s3/symcc#108. Fixes #19.
The interface of the SymCC runtime has changed due to eurecom-s3/symcc#108. Fixes #19.
Consider this example (inspired by a real-world code):
Clang for
bar
will emit with-O1
(when using-O2
, the functionbar
is inlined, hiding the bug):Notice the
sext
operation. When instrumenting with SymCC, we get:The problem is that
_sym_build_bool_to_bits
builds an If-Then-Else likeif (cond, 0x0...01, 0x0...0)
which is correct only in case of azext
operation but not for asext
operation. Indeed, SymCC is not able to generate an alternative input on the example:One possible fix could be to provide, e.g.,
_sym_build_bool_to_sign_bits
and use it invisitCastInst
for thei1
case iff the instruction isInstruction::SExt
.Let me know if you want a PR along this direction or if we should design a slightly different fix.
The text was updated successfully, but these errors were encountered: