* Update README.md
fix missing link
* Update LIFE_OF_AN_INSTRUCTION.md
There are difference address between picture and example code.
maybe it is just a little mistake
* Update DESIGN.md
between A and B from C...
maybe it is wrong grammar.
but English is not my first language.
downstream tools can distinguish between LLVM `load` and `store` instructions from accesses to the modeled program's memory.
=>
downstream tools can distinguish LLVM `load` and `store` instructions from accesses to the modeled program's memory.
it seems more nature. (i think.)
* Lots of tests.
* Minor fixes
* Minor fixes
* Minor fixes
* Forgot to add in some isels
* Remove scaling of offset from LDR on vector sub-registers for pre- and post-indexing
* Minor formatting change to Instruction printing. Fixes to adding extend memops for aarch64.
* Missing ISELs
* Minor fix
* Added semantics and tests for SIMD LDP instructions.
* Minor fix
* Semantics and tests for LDUR and STUR
* Minor fix to a test. Added decoders and ISELs for SIMD LDUR and STUR.
* Semantics and tests for LDURB, LDURH, STURB, and STURH.
* Minor fix to ISEL name
* Added semantics and tests for LDRSB, LDRSH, and LDRSW.
* Minor fix
* Minor fix
* Minor fix
* Minor fix
* Minor fix
* Hopefully the last minor fix for ldrsb.. I should really have done one fix for all
* Minor fix
* Minor fix
* Minor fixes.
* Semantics and tests for SIMD ORR on registers.
* Minor change to simd ORR test to make sure that it tests whether or not zero-extension happens
* Semantics and tests for MSUB.
* Minor fix.
* Minor fix.
* Minor reformatting, re-enabling test of CCMP.
* Modified post-decoder of CCMP_n_CONDCMP_IMM, added more tests for it. Also added post-decoders, but NO tests for the register-register variant
* Fixes#144.
* Tests for LDP and STP. Decoder and semantics, but no tests for LDR and STR on the B, H, S, D, and Q vector sub-regs.
* Minor fix
* Minor fix, I think, to pre-index memops
* Minor simplifying code to pre- and post-index address operand handling
* Added in more aarch64 instructions. Fixed some x86 instructions. The x86 test cases now exercise each test through every possible combination of flags.
* Adding missing files
* Another missing file
* Rename file
* Fixup some macros
* IPR
* More improvements on the test runner
* Test runner fixes related to me not being familiar with aarch64 assembly
* Fixing default data layout
* Trying to use llc to compile bitcode to aarch64 assembly. wth.
* Revert back to using the CMAKE_BC_COMPILER for building the test assembly file instead of the whole CMAKE_LL_COMPILER stuff, now that I've adjusted cxx-common to use the right build target for aarch64.
* Documentation updates. Fixes for aarch64.
* Making progress. The native tests can run, but the first lifted test faults. Not yet sure why.
* Weirdest issue is happening on aarch64. A pointer argument is being compiled to an integer, and that's really screwing things up.
* Add caching of the libraries path to the main cmakelists to avoid having to re-run build.sh all the time when the TRAILOBITS_LIBRARIES env var is not globally defined. Experimenting with trying to force the semantics to be compiled using the x86_64 target, regardless of host arch, or modelled arch of the semantics. This is to try to get around the issue where a single-element struct containing a pointer is lowered into a uintptr_t when passed by value as an argument on aarch64.
* Alright, falling back on handling this problem in the lifter (for now, at least). Really not ideal.
* Test runner works afaict
* This includes most of Alessandro's wonderful cmake changes, and starts into AArch64 support, though not using Capstone anymore.
* Trying to make travis work
* Minor additions, still not completely working on my ubuntu 14.04 vm or on travis
* Making progress on getting travis to build
* Some documentation improvements
* I push the travis button
* Change copyright notice in all the places. Trying to get cmake to download all the things
* CMake refactor
* Added the lib repository installer
* Fixed a couple of paths in library repository scripts
* Spelling and a missing .gitignore file.
* The google test library was not correctly linked
* Removed the pre-compiled XED library
* Removed unused files; fixed the INSTALL directives. Added automatic protobuf generation.
* Added a package generator script for ArchLinux
* Merged in Alessandro's cmake magic
* Cleanups, compatibility changes
* CMake cleanup.
o Removed the cmake folder as it is no longer used.
o Removed the library_repository_installer directory and
replaced it with a submodule to the newly introduced
cxx_common repository.
o Added the 'use_remill_semantics' branch of mcsema as a
submodule under tools/cmake.
o Updated the README instructions (added --recursive to the
git clone command).
Warning: the mcsema submodule is pointing to my fork of the
repository!
* CMake: avoid re-defining the C/CXX/ASM compiler.
This will prevent CMake from looping forever when using submodules.
* The tools/mcsema submodule now points to the official repository.
* mcsema submodule update
* Updated the mcsema git submodule to track the newest changes.
* Various CMake fixes (see details).
o External include headers were not correctly marked
as SYSTEM. This caused them to output warnings and
break the build.
o The PROJECT_SOURCE CMake variable has been replaced
with CMAKE_SOURCE_DIR.
o Updated the mcsema submodule to point to the latest
CMake fixes.
* Getting closer to having the test case runner work again without using the CFG protobufs.
* Trying to make things use ubuntu clang/llvm packages
* Update to the mcsema submodule.
* Minor changes for llvm version compatibility
* Test cases should run now. Had to compile the lifted testcases to a .S file, as with the .bc file, they were being optimized away.. I think. The compilation to assembly seems unusually slow, though.
* Minor change
* Some stuff for llvm 4.0 support
* Remove mcsema sub-module
* Remove cxx-common submodule
* First steps toward getting travis working again
* Attempt at getting travis working again
* Using https for cloning instead of ssh
* Minor build script update
* Added ISEL_ prefix to isels to make it easier for ForEachISel to find them. Commented out the defer_inlining intrinsics.
* Changes related to mcsema2
* Simplify runtime targets generation. (#110)
* CMake refactor: Added a new language 'BC' for the bitcode (see details).
The language is used to generate the runtimes used by the architecture
modules. The required executables (clang++ and llvm-link) are
automatically detected in the same way as other compilers are.
A new CMake function has been added and it can be used to easily
generate runtime targets in a way similar to add_executable:
add_runtime(<name> SOURCE <source list> ADDRESS_SIZE <n>
DEFINITIONS <definition list>)
Additionally, all files ending with the *.bcpp extensions will
automatically invoke the bitcode compiler when listed in an
active target.
This should open support for parallel compilation! You just have to
list all your .cpp files when calling add_runtime.
* CMake: Fixes to the BC language handler.
* CMake/BC: Use '.bo' for object files. X86 runtime: Add -g/-O flags.
Issue 44 mmx support (#58)
* Should fix Issue #56. Used -isystem instead of -I, as it's an include of <cstdint> instead of "stdint.h". @erhlee-bird does this work on your system?
* Minor changes
* Remove old 'test' function.
* Start to MMX PUNPCK instructions.
* Initial example for a PUNPCK instruction.
* Cleanups to Operators.h. Specifically, to the signed versions of vector operations. They now more strictly enforce type safety. This caught a few bugs. Operators.h is arguable simpler as a result.
* MMX Instruction support(PADD/PSUB); Fix for handling signed operations;
* Should fix Issue #56. Used -isystem instead of -I, as it's an include of <cstdint> instead of "stdint.h". @erhlee-bird does this work on your system?
* Minor changes
* Cleanups to Operators.h. Specifically, to the signed versions of vector operations. They now more strictly enforce type safety. This caught a few bugs. Operators.h is arguable simpler as a result.
* merged conflict;
* MMX Instructions (PAVG/PHSUB/PMULHRS)
* Testcases for PADD/PSUB; Fix for signed/unsigned saturation;
* Test cases for PAVG/PABS/PACKSS; Fixes for MMX instructions handling;
* Fixed PACKSSWB instruction handling;
* PHADD/PHADDSW Instruction;
* PMAXSW/PMAXUB/PMINSW/PMINUB Instructions
* PCMP/PUNPCK/PMUL Instructions;
* Corrected space indentation;
* Fixed build issue;
* reimplemntation of instructions with saturation arithmetic
Minor syntax fixes. Added beginning of an implementation for EMMS.
Issue 44 mmx support (#65)
* Remove old 'test' function.
* Start to MMX PUNPCK instructions.
* Initial example for a PUNPCK instruction.
* MMX Instruction support(PADD/PSUB); Fix for handling signed operations;
* Should fix Issue #56. Used -isystem instead of -I, as it's an include of <cstdint> instead of "stdint.h". @erhlee-bird does this work on your system?
* Minor changes
* Cleanups to Operators.h. Specifically, to the signed versions of vector operations. They now more strictly enforce type safety. This caught a few bugs. Operators.h is arguable simpler as a result.
* merged conflict;
* MMX Instructions (PAVG/PHSUB/PMULHRS)
* Testcases for PADD/PSUB; Fix for signed/unsigned saturation;
* Test cases for PAVG/PABS/PACKSS; Fixes for MMX instructions handling;
* Fixed PACKSSWB instruction handling;
* PHADD/PHADDSW Instruction;
* PMAXSW/PMAXUB/PMINSW/PMINUB Instructions
* PCMP/PUNPCK/PMUL Instructions;
* Corrected space indentation;
* Fixed build issue;
* reimplemntation of instructions with saturation arithmetic
* PSLL/PSRL/PMUL instructions;
* Add in some missing arg parsing to Run.cpp. Set the minimum default log level in the test runner so that Travis logs don't explode so much, causing Travis to cancel an otherwise 'good' job.
* Update README.md (#62)
Fixed install path for install_gtest.sh
* Fixed failing testcases for PSLL/PSRA/PSRL/PACKSS
* Cleanup and resolved TODO comments;
* Added new testcases for MMX instructions;
* Fixes Issues #52 and #53. Addresses first comment of Issue #45.
* MIssing file
* Renaming test cases
* In progress changes. Moduler verifier is complaining about lack of \!dbg location entries. Adding a SourceWriter to produce something semi-useful.
* Linking lifted instruction code to printed out assembly code now works
* Added new instruction and testcase for CVTPI2PS. Made general improvements:
- made it so that disassembled instructions can be printed to a file, and linked back to the bitcode via debug info.
- eliminated the unnecessary _read and _write suffixes for registers in __remill_basic_block.
Mostly cosmetic changes. For example, limiting line length, putting spaces before the opening parens of loops, etc. Renamed all the semantics files to be cpp source files instead of header files. That stops cpplint from complaining about anonymous namespaces in headers ;-)
* Working on factoring out external dependencies
* Making progress
* CMake for remill-lift seems to work :-)
* Improving build process and dependency list. Using a blank ubuntu 14.04 vm for testing.
* Still fighting with various dependencies.
* Making more progress with CMake stuff! Now have the semantics get compiled with cmake, and support installing stuff. I have also attempted to auto-find the semantics files when --bc_in is not provided.
* Adding protobuf compilation back to the steps.
* Improving readme
* Improving readme
* Switch to using the command.
* Updated travis. Updated README to include new build badge icons, to change where the ldconfig step goes, and to add a CMake notice for ubuntu trusty.
* Added script to generate tests. Added auto-yes in apt-add-repository commands.
* Minor fix
* Enable auto-finding of --bc_in based on --arch_in.
* Adding more test generation and compilation. Unfortunately compiling tests isn't working due to llvm::CloneFunctionInto not quite working anymore.
* llvm::CloneIntoFunction seems to work, which may resolve Issue #55. I'll need to double check with the official release version of LLVM; right now I'm using a custom debug build to try to catch issues. Added code to build and install gtest. Directly referenced which LLVM libraries must be linked. Added backup paths for deducing the semantics bitcode files based on the input arch. Made remill-lift report simple flag errors via stderr instead of using glog to abort the program. Fixed an issue where, when I added the various arch versions, xed was decoding avx-enabled instructions as 64-bit because the comparison condition deciding which decode state to use was too narrow.
* Tests generation and running scripts now work for me. Gotta test in fresh vms now.
* Addresses Issue #55. The problem was that the release version of clang 3.9 isn't guaranteed to preserve c++ variables name in the bitcode. I've added some stuff to re-introduce the variable names based on debug info.
* Build the test runner with rtti so that gtest doesn't complain on some versions of ubuntu.
* Fixing up Travis build stuff
* I am dumb; forgot to add the os-generic install file for travis to pick up.
* Change the trusty build type to generic, otherwise Travis uses a YUGE vm with all the things.
* Disable aptitude upgrading. dhclient is getting in the way.
* Re-order the linux-specific travis install script. Hope that protocol buffers gets installed correctly this time. Remove test generation and running from end of install script -- it doesn't belong there.
* Try to purge dhcp client, then add it back in, then do the normal update + upgrade
* Something is very dumb about Travi CI's generic linux build environment. It seems to be having trouble with the protobuf-compiler package -- that or somehting is going wrong just before that package is installed.
* Use the cpp build language -- I think this defaults to that mega vm though. Print out better OS information at the beginning of the travis install. Individually install needed packages, as opposed to doing it all at once.
* OK, using cpp language got me further, but builds take much longer. I was still missing cstdint, though. This time I'll try building with the generic trusty travis image, and with build-essential and the g++ 4.8 stdlib dev files installed.
* Lets try using the libstdc++ dev files
* Add in the x32 versions of the dev files. Hopefully that'll resolve the missing cstdint for the 32-bit builds of some of the instruction semantics bitcode files.
* Hopefully these are right!
* Install g++ multilib package.
* Simplifications to installer, and also to the README to now use g++-multilib.