* API improvements. Must be used with the api_improvements branch of both Remill and McSema
fixes for x86 and running the lifted code with klee
* Update dockerfile to clone anvill
* update remill commit id
* Add python3 to dockerfile
* update python3
* disable abi script
* Updated cmake to find anvill
* Update main.cpp
* update find_package for anvill
* WIP:updated prebuild cfg
* update prebuild cfg files
* enable abi build for testsuite
* Fix memory leak
* install missing package for testcases
* frontend: Reflect cfg file changes in dyninst frontend.
* frontend: Update local files copyrights to reflect overall change to agplv3.
* fix failing testcases
* update test cfgs
* Fix test failure with local state pointer
* set the flag to use local state_ptr in default mode
Co-authored-by: kumarak <iit.akshay@gmail.com>
Co-authored-by: Lukas Korencik <xkorenc1@fi.muni.cz>
* bc: Inline calls to semantic functions and wrappers manually.
* bc: Inline calls to semantics and wrappers only if some flags are set.
* Refactor code that is responsible for abi libs loading.
* Wrap global pointers in RAII.
* Update .remill_commit_id
Co-authored-by: Peter Goodman <peter.goodman@gmail.com>
* Attempt to resolve Issue #521
* minor fix
* minor fix
* minor fix
* Simplifications and comments
* If it's a copy of shared data, then don't treat it as an xref
* Error log if there is segment variable with the same name as external var
* Added flag and checks if the variable needs initialization if already defined;
* fix noreturn for the functions throwing exceptions;
* review changes
* Update get_cfg.py
* Update get_cfg.py
* Fix the recovery of exception action table chain
* Update the prebuild cfg for testsuite
* Fix entrypoint function not getting recovered in ida7
* Change the order of idc.GetFunctionName and idc.GetTrueName while looking for function name
* Handle large sized externals as byte arrays
* Externals <= 128 bits are treated as an integer
* Externals > 128 bits are treated as a byte array aligned the same as the
original variable
* Output recovered external variable size in mcsema-disass debug info
* In progress. Working on an example of using KLEE on a Maze, but with the maze program being compiled to x86, amd64, and aarch64.
* Making lots of progress on getting lifting and runnning an aarch64 maze program on amd64, but using --explicit_args. The key thing I'm working through right now is a jump offset table, but where the offset is a block pc, rather than a table base. Also adding various bits of code here and there to making runnning with klee more directly doable, and working on a debugging facility to track down when the emulated program counter gets out of sync with the original program.
* Fixed a subtle @PAGE and @PAGEOFF-related reference bug on AArch64. Partially disabled the special jump offset table handling I had in table.py, as it doesn't (yet) handle the shifted table values. However, I still have the code there, so that it can recognize that a basic block address is used as a possible offset, so that I can remove the block address as a reference, which permits a new heuristic on the C++ side to work. On the C++ side, when there's a jump instruction that isn't associated with a cross-reference flow, I try to auto-augment it with addition switch cases, targeting blocks with no predecessors (as present in the CFG). This seems to work reasonably well.
* Improved the scripts and updated the READMEs.
* Minor rephrase
* Minor rephrase
* Fixes some issues related to not identifying thunks anymore. @kumarak please review and do your own internal testing.
* Adds --library command-line option, which can be used to link in declarations from another bitcode file.
* Minor fix for llvm 3.6 compatibility.
* Possible fix to issue where a native var address is left uninitialized.
* fixed issue in resolving data references for apache
* Update get_cfg.py
Remove some debug statements.
* explicit args to external APIs
* Make AArch64 disassembly detect refs to external functions
* Fix awful bug where code would become undefined since our callinst was not same convention as the called function
* Emit enough code so that AArch64 bitcode gets emitted