-
Notifications
You must be signed in to change notification settings - Fork 16
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
update pypcode to use version >2.0.0 #27
Conversation
I think it was used to be able to create dict of instructions and/or allow them to be cached. |
f26054e
to
174965f
Compare
I force-pushed to rebase it on the current main. Just FYI pypcode now is marked as an optional dependency (so install it with |
This is the never-ending dilemma about caching/uncaching 😅 I think at the moment there is still a bit of misalignment between what is supposed to be cached and what is not. In QBinDiff and python-binexport we adopted the design choice of having the functions preloaded, the basic blocks by default not cached and everything below basic block (instructions, operands, etc...) as cached by default. Overall it seems like a good solution that we might enforce on quokka as well. This means also that we might need to reintroduce the equalty and hashing operations at some point. Maybe we can create an issue as a remainder for enforcing this caching design choice and for now go on and not care about caching pcode objects. |
I think changes I made breaks the backward compatibility with older versions of pypcode. Thus we need to enforce pypcode>=2.0.0. Was the dependency optional previously ? If not I would prefer to leave it as mandatory for ease of use. |
Ah sorry, I thought the requirement was for >= 1.1.2
It has been optional since fe701ba |
Ready to be merged on my side. |
Quokka was enforcing pypcode<2, but a new version 2.0.0 was released. This merge request updates the pypcode part to use the latest version. The following things have changed.
ContextObj
is no longer exposedContext.translate
, returns aTranslationResult
which sole attribute is directly a list ofPcodeOps
. No more instructionsThis merge request changes the following:
ContextObj
toContext
object.combine_instructions()
as translating a block returns directly a list of PcodeOpsShall be prooftested before merging...