Split CFG extraction into multiple files#56
Open
valbucci wants to merge 21 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Background
There was a JSON truncation issue when extracting CFG data from big files providing a lot of functions.
The truncation issue has already been solved in
3f9e509, where instead of aborting the whole extraction, it stores the CFGs until the end of file error is met. Still, this means that the data extraction would be incomplete.Summary
This PR introduces the
func-cfgextraction mode. This is the same data as with the plaincfgmode. However, the difference is that theagfjcommand is executed function-by-function and the result is stored in a separate file, following the same procedure as the bytes extraction.For instance, this new mode can be tested with the following command:
bin2ml -l debug extract --extended-analysis -f mips64-gcc-7-O3_z3 -o . -m func-cfg --func-filename "{address}-{symbol}.{ext}"The output will be a directory called
mips64-gcc-7-O3_z3_func-cfgcontaining a set of files as exemplified below: