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

New control flow support #98

Merged
merged 24 commits into from
Feb 24, 2021
Merged

New control flow support #98

merged 24 commits into from
Feb 24, 2021

Conversation

sschriner
Copy link
Contributor

No description provided.

…yConditionalIndirectJump, kCategoryConditionalDirectFunctionCall, kCategoryConditionalIndirectFunctionCall
Copy link
Contributor

@artemdinaburg artemdinaburg left a comment

Choose a reason for hiding this comment

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

The code looks sane from a quick look, but as someone who is not very familiar with Anvill internals yet, I would love some high-level comments about what each of the functions is supposed to be doing.

include/anvill/MCToIRLifter.h Show resolved Hide resolved
@@ -123,13 +123,42 @@ void MCToIRLifter::VisitIndirectJump(const remill::Instruction &inst,
remill::AddTerminatingTailCall(block, intrinsics.jump);
}

void MCToIRLifter::VisitConditionalIndirectJump(const remill::Instruction &inst,
Copy link
Contributor

Choose a reason for hiding this comment

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

Could you add a comment that describes at a high level what this visitor is doing? I see it makes a conditional branch, but I am curious why and what each side of the branch is logically doing

lib/MCToIRLifter.cpp Show resolved Hide resolved
lib/MCToIRLifter.cpp Outdated Show resolved Hide resolved
lib/MCToIRLifter.cpp Outdated Show resolved Hide resolved
* Removes any mention of python2

* Removes more mentions of python2
lib/MCToIRLifter.cpp Outdated Show resolved Hide resolved
lib/MCToIRLifter.cpp Outdated Show resolved Hide resolved
lib/MCToIRLifter.cpp Show resolved Hide resolved
lib/MCToIRLifter.cpp Outdated Show resolved Hide resolved
lib/MCToIRLifter.cpp Outdated Show resolved Hide resolved
lib/MCToIRLifter.cpp Show resolved Hide resolved
alessandrogario and others added 19 commits February 12, 2021 18:20
* IDA: Add a simple action to generate spec files

* docs: Update the example instructions
* Modifies lifting to ignore functions that do not have mapped bytes in the spec

* Moves byte existence and executability check to LifFunction() and adds comments
* Handling of named references

Fix the handling of type cache and read bytes from memory

* review changes

* Add vector type lifting

* add remill compat header for vector type

Co-authored-by: AkshayK <[email protected]>
* CMake: Refactor

* CMake: Update the copyright and license headers

* CMake: Refactor

* CMake: Refactor

* Misc: Remove unused remill_commit_id file

* CMake: Refactor

* CMake: Refactor

* CMake: Refactor

* CMake: Refactor

* docs: Update the dependencies in the README

* CI: Update the GitHub Actions workflow

* CI: Update the GitHub Actions workflow

* CI: Update the GitHub Actions workflow

* Packaging: Add DEB/RPM/TGZ for Linux, TGZ for macOS

* CI: Automatically create a release when pushing a tag

* CI: Include tags when obtaining version information

* CI: Automatically abort stale workflows

* CMake: Refactor

* CI: Disable shallow clone to fix version detection

* CI: Fix Python packaging

* CMake: Refactor

* CI: Update the release generator
Limit MacOS to LLVM 11 since we have a limited number of MacOS runners.
Adding assert to convert type function
 - Enables the tests and the install target in the default configuration
 - Fixes an issues with packaging, which didn't work correctly due to
   how DESTDIR was handled
* Fixes a use of replaceAllUsesOf

* Move the binja_var_none_type test to should-be passing. Also, make all stack frames packed, as the way the structure types are constructed assumes every element is adjacent in memory, with i8s explicitly filling gaps

* Give __anvill_reg_XXX variables a default initializer to make compiling bitcode possible. Get rid of overly eager, evil optimization that tries to load constants from memory into allocas. Add instcombine to the set of optimizations for folding goodness

* Adds a --print_registers_before_instuctions option to inject printfs into the bitcode to dump all address-sized integer registers to stdout before each instruction

* Move binja_var_non_type back into failing tests for now

Co-authored-by: Carson Harmon <[email protected]>
* fix crash due to array size and unsupported reg

* Fixed assertion failure triggered in ret0.json

Co-authored-by: Peter Goodman <[email protected]>
* Fix bytesequence and copypasta issues

* Do variable references again

* Update Program.h

Useless change to force CI :-P

Co-authored-by: Peter Goodman <[email protected]>
@pgoodman pgoodman merged commit bc3183b into master Feb 24, 2021
@pgoodman pgoodman deleted the new_control_flow_support branch February 24, 2021 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants