-
Notifications
You must be signed in to change notification settings - Fork 470
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
x86 FXSAVE & FXRSTOR support #2511
Conversation
The emulation tests are currently failing because the new |
Note to myself: when merging this PR we should open a new manticore issue that reminds us to track unicorn releases so that when they merge the support for the additional floating point registers ( |
dbe5ffa
to
489d084
Compare
This is finally ready for review! Summary of this PR:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good! I appreciate the way you encoded the layouts as tables so we'll be able to easily tweak them later. I was almost certain that FOP
being 11 bits was a typo, but upon googling it turns out that x87 is just weirder than I expected.
* Add SMT simplifications for bitvec subtraction * Add X86 support for FXSAVE and FXRSTOR * Unicorn emulator: ignore floating point registers than aren't yet supported in unicorn * Emulator: Also ignore MXCSR_MASK register * Add logic to translate floating point registers values from (mantissa,exponent) to bitfield
This reverts commit 504ec9c. It seems that FXSAVE/FXSTORE on symbolic data causes or triggers some bugs in Manticore in the MATE tests, so we revert the commit until we figure out the root cause of the issue.
* master: (35 commits) Switch to stable Black (#2536) Fix typo in Manticore.linux constructor docstring (#2535) Revert CI changes made in #2526 Release Manticore 0.3.7 (#2526) Optimise forking when there is only 1 solution (#2527) Epoll Implementation (#2529) Split off ENDBR32/64 from CHESS branch (#2533) Update to crytic-compile 0.2.2 (#2530) Also ignore missing unicorn registers in the fallback emulator (#2531) x86 FXSAVE & FXRSTOR support (#2511) Fix `BitVecExtract` simplification for constant folding (#2524) Add pip-audit action workflow (#2513) Add EXPLICIT fork policy (#2514) Enforce crytic-compile==0.2.1 (#2512) Improve namedtuple definition (#2506) Add SMT simplifications for bitvec subtraction (#2504) Fix handling of the program base address in Linux (#2500) Bump Sphinx version to 4.3.0 (#2503) Solver Improvements (#2502) Improves `namedtuple` definition (#2501) ...
* master: Switch to stable Black (#2536) Fix typo in Manticore.linux constructor docstring (#2535) Revert CI changes made in #2526 Release Manticore 0.3.7 (#2526) Optimise forking when there is only 1 solution (#2527) Epoll Implementation (#2529) Split off ENDBR32/64 from CHESS branch (#2533) Update to crytic-compile 0.2.2 (#2530) Also ignore missing unicorn registers in the fallback emulator (#2531) x86 FXSAVE & FXRSTOR support (#2511) Fix `BitVecExtract` simplification for constant folding (#2524) Add pip-audit action workflow (#2513) Add EXPLICIT fork policy (#2514) Enforce crytic-compile==0.2.1 (#2512) Improve namedtuple definition (#2506) Add SMT simplifications for bitvec subtraction (#2504) Fix handling of the program base address in Linux (#2500)
This reverts commit 504ec9c. It seems that FXSAVE/FXSTORE on symbolic data causes or triggers some bugs in Manticore in the MATE tests, so we revert the commit until we figure out the root cause of the issue.
This PR adds support for the FXSAVE and FXRSTOR instructions