diff --git a/CMakeLists.txt b/CMakeLists.txt index 0968571..5a5c40a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,50 +72,55 @@ FetchContent_MakeAvailable(magic_enum) # Target: lifter set(lifter_SOURCES - "lifter/PathSolver.cpp" - "lifter/lifter.cpp" - "lifter/test_instructions.cpp" - "lifter/utils.cpp" - "lifter/CommonMnemonics.h" - "lifter/CommonRegisters.h" - "lifter/GEPTracker.h" - "lifter/OperandUtils.h" - "lifter/PathSolver.h" - "lifter/Semantics.h" - "lifter/ZydisDisassembler_mnemonics.h" - "lifter/ZydisDisassembler_registers.h" - "lifter/icedDisassembler_mnemonics.h" - "lifter/icedDisassembler_registers.h" - "lifter/includes.h" - "lifter/test_instructions.h" - "lifter/utils.h" - "lifter/CommandLineHelpers.hpp" - "lifter/CommonDisassembler.hpp" - "lifter/CustomPasses.hpp" - "lifter/FunctionSignatures.hpp" - "lifter/InlinePolicy.hpp" - "lifter/LiftDriver.hpp" - "lifter/LifterApplication.hpp" - "lifter/LifterPipeline.hpp" - "lifter/LifterPipelineStages.hpp" - "lifter/LifterStages.hpp" - "lifter/MemoryPolicy.hpp" - "lifter/MemoryPolicySetup.hpp" - "lifter/MergenPB.hpp" - "lifter/RegisterManager.hpp" - "lifter/RuntimeImageContext.hpp" - "lifter/ZydisDisassembler.hpp" - "lifter/fileReader.hpp" - "lifter/icedDisassembler.hpp" - "lifter/lifterClass.hpp" - "lifter/lifterClass_concolic.hpp" - "lifter/lifterClass_symbolic.hpp" - "lifter/pp_macros.hpp" - "lifter/tester.hpp" - "lifter/GEPTracker.ipp" - "lifter/OperandUtils.ipp" - "lifter/PathSolver.ipp" - "lifter/Semantics.ipp" + "lifter/core/Lifter.cpp" + "lifter/core/Utils.cpp" + "lifter/analysis/PathSolver.cpp" + "lifter/test/TestInstructions.cpp" + "lifter/core/Includes.h" + "lifter/core/OperandUtils.h" + "lifter/core/Semantics.h" + "lifter/core/Utils.h" + "lifter/core/CommandLineHelpers.hpp" + "lifter/core/FunctionSignatures.hpp" + "lifter/core/InlinePolicy.hpp" + "lifter/core/LiftDriver.hpp" + "lifter/core/LifterApplication.hpp" + "lifter/core/LifterClass.hpp" + "lifter/core/LifterClass_Concolic.hpp" + "lifter/core/LifterClass_Symbolic.hpp" + "lifter/core/LifterPipeline.hpp" + "lifter/core/LifterPipelineStages.hpp" + "lifter/core/LifterStages.hpp" + "lifter/core/MergenPB.hpp" + "lifter/core/RegisterManager.hpp" + "lifter/core/RuntimeImageContext.hpp" + "lifter/disasm/CommonDisassembler.hpp" + "lifter/disasm/CommonMnemonics.h" + "lifter/disasm/CommonRegisters.h" + "lifter/disasm/IcedDisassembler.hpp" + "lifter/disasm/IcedDisassemblerMnemonics.h" + "lifter/disasm/IcedDisassemblerRegisters.h" + "lifter/disasm/ZydisDisassembler.hpp" + "lifter/disasm/ZydisDisassemblerMnemonics.h" + "lifter/disasm/ZydisDisassemblerRegisters.h" + "lifter/memory/FileReader.hpp" + "lifter/memory/GEPTracker.h" + "lifter/memory/GEPTracker.ipp" + "lifter/memory/MemoryPolicy.hpp" + "lifter/memory/MemoryPolicySetup.hpp" + "lifter/analysis/CustomPasses.hpp" + "lifter/analysis/PathSolver.h" + "lifter/analysis/PathSolver.ipp" + "lifter/semantics/OperandUtils.ipp" + "lifter/semantics/PPMacros.hpp" + "lifter/semantics/Semantics.ipp" + "lifter/semantics/Semantics_Arithmetic.ipp" + "lifter/semantics/Semantics_Bitwise.ipp" + "lifter/semantics/Semantics_ControlFlow.ipp" + "lifter/semantics/Semantics_Helpers.ipp" + "lifter/semantics/Semantics_Misc.ipp" + "lifter/test/TestInstructions.h" + "lifter/test/Tester.hpp" cmake.toml ) @@ -124,6 +129,15 @@ add_executable(lifter) target_sources(lifter PRIVATE ${lifter_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${lifter_SOURCES}) +target_include_directories(lifter PRIVATE + "lifter/core" + "lifter/semantics" + "lifter/disasm" + "lifter/memory" + "lifter/analysis" + "lifter/test" +) + if(DEFINED MERGEN_TEST) # testmode target_compile_definitions(lifter PRIVATE MERGEN_TEST @@ -169,10 +183,10 @@ endif() # Target: rewrite_microtests set(rewrite_microtests_SOURCES - "lifter/PathSolver.cpp" - "lifter/lifter.cpp" - "lifter/test_instructions.cpp" - "lifter/utils.cpp" + "lifter/core/Lifter.cpp" + "lifter/core/Utils.cpp" + "lifter/analysis/PathSolver.cpp" + "lifter/test/TestInstructions.cpp" cmake.toml ) @@ -181,6 +195,15 @@ add_executable(rewrite_microtests) target_sources(rewrite_microtests PRIVATE ${rewrite_microtests_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${rewrite_microtests_SOURCES}) +target_include_directories(rewrite_microtests PRIVATE + "lifter/core" + "lifter/semantics" + "lifter/disasm" + "lifter/memory" + "lifter/analysis" + "lifter/test" +) + target_compile_definitions(rewrite_microtests PRIVATE MERGEN_TEST ) @@ -216,4 +239,3 @@ if(WIN32) # windows Ws2_32 ) endif() - diff --git a/cmake.toml b/cmake.toml index df32532..387e69e 100644 --- a/cmake.toml +++ b/cmake.toml @@ -36,8 +36,16 @@ tag = "a413fcc" [target.lifter] type = "executable" -sources = ["lifter/*.cpp"] -headers = ["lifter/*.h", "lifter/*.hpp", "lifter/*.ipp"] +sources = ["lifter/core/*.cpp", "lifter/analysis/*.cpp", "lifter/test/*.cpp"] +headers = [ + "lifter/core/*.h", "lifter/core/*.hpp", + "lifter/semantics/*.hpp", "lifter/semantics/*.ipp", + "lifter/disasm/*.h", "lifter/disasm/*.hpp", + "lifter/memory/*.h", "lifter/memory/*.hpp", "lifter/memory/*.ipp", + "lifter/analysis/*.h", "lifter/analysis/*.hpp", "lifter/analysis/*.ipp", + "lifter/test/*.h", "lifter/test/*.hpp" +] +include-directories = ["lifter/core", "lifter/semantics", "lifter/disasm", "lifter/memory", "lifter/analysis", "lifter/test"] link-libraries = ["LLVM-Wrapper", "linux-pe", "magic_enum"] ICED_NOT_FOUND.link-libraries = ["Zydis"] ICED_FOUND.link-libraries = ["Iced_Wrapper"] @@ -51,8 +59,16 @@ compile-options = ["$<$,$ #include diff --git a/lifter/PathSolver.cpp b/lifter/analysis/PathSolver.cpp similarity index 99% rename from lifter/PathSolver.cpp rename to lifter/analysis/PathSolver.cpp index aa446c8..701eda6 100644 --- a/lifter/PathSolver.cpp +++ b/lifter/analysis/PathSolver.cpp @@ -1,7 +1,7 @@ #include "PathSolver.h" #include "CustomPasses.hpp" -#include "utils.h" +#include "Utils.h" #include #include #include diff --git a/lifter/PathSolver.h b/lifter/analysis/PathSolver.h similarity index 100% rename from lifter/PathSolver.h rename to lifter/analysis/PathSolver.h diff --git a/lifter/PathSolver.ipp b/lifter/analysis/PathSolver.ipp similarity index 99% rename from lifter/PathSolver.ipp rename to lifter/analysis/PathSolver.ipp index db9cb15..b96719a 100644 --- a/lifter/PathSolver.ipp +++ b/lifter/analysis/PathSolver.ipp @@ -2,8 +2,8 @@ #include "CommonDisassembler.hpp" #include "PathSolver.h" -#include "lifterClass.hpp" -#include "utils.h" +#include "LifterClass.hpp" +#include "Utils.h" #include #include #include diff --git a/lifter/CommandLineHelpers.hpp b/lifter/core/CommandLineHelpers.hpp similarity index 100% rename from lifter/CommandLineHelpers.hpp rename to lifter/core/CommandLineHelpers.hpp diff --git a/lifter/FunctionSignatures.hpp b/lifter/core/FunctionSignatures.hpp similarity index 99% rename from lifter/FunctionSignatures.hpp rename to lifter/core/FunctionSignatures.hpp index 17a081a..28fb6eb 100644 --- a/lifter/FunctionSignatures.hpp +++ b/lifter/core/FunctionSignatures.hpp @@ -1,6 +1,6 @@ #ifndef FUNCSIGNATURES_H #define FUNCSIGNATURES_H -#include "fileReader.hpp" +#include "FileReader.hpp" #include #include #include diff --git a/lifter/includes.h b/lifter/core/Includes.h similarity index 100% rename from lifter/includes.h rename to lifter/core/Includes.h diff --git a/lifter/InlinePolicy.hpp b/lifter/core/InlinePolicy.hpp similarity index 100% rename from lifter/InlinePolicy.hpp rename to lifter/core/InlinePolicy.hpp diff --git a/lifter/LiftDriver.hpp b/lifter/core/LiftDriver.hpp similarity index 93% rename from lifter/LiftDriver.hpp rename to lifter/core/LiftDriver.hpp index 50ee884..40ddec8 100644 --- a/lifter/LiftDriver.hpp +++ b/lifter/core/LiftDriver.hpp @@ -1,6 +1,6 @@ #pragma once -#include "lifterClass_concolic.hpp" +#include "LifterClass_Concolic.hpp" inline void runLiftWorklist(lifterConcolic<>* lifter) { BBInfo bbinfo; diff --git a/lifter/lifter.cpp b/lifter/core/Lifter.cpp similarity index 92% rename from lifter/lifter.cpp rename to lifter/core/Lifter.cpp index 3b1dd73..81fd141 100644 --- a/lifter/lifter.cpp +++ b/lifter/core/Lifter.cpp @@ -7,15 +7,15 @@ #include "LifterPipeline.hpp" #include "LifterStages.hpp" #include "MergenPB.hpp" -#include "includes.h" -#include "lifterClass.hpp" -#include "lifterClass_concolic.hpp" -#include "lifterClass_symbolic.hpp" +#include "Includes.h" +#include "LifterClass.hpp" +#include "LifterClass_Concolic.hpp" +#include "LifterClass_Symbolic.hpp" -#include "test_instructions.h" +#include "TestInstructions.h" #include "Semantics.ipp" -#include "utils.h" +#include "Utils.h" #include #include #include diff --git a/lifter/LifterApplication.hpp b/lifter/core/LifterApplication.hpp similarity index 98% rename from lifter/LifterApplication.hpp rename to lifter/core/LifterApplication.hpp index 0bee03d..f2496d1 100644 --- a/lifter/LifterApplication.hpp +++ b/lifter/core/LifterApplication.hpp @@ -1,7 +1,7 @@ #pragma once #include "CommandLineHelpers.hpp" -#include "utils.h" +#include "Utils.h" #include #include #include diff --git a/lifter/lifterClass.hpp b/lifter/core/LifterClass.hpp similarity index 99% rename from lifter/lifterClass.hpp rename to lifter/core/LifterClass.hpp index 9dd3204..d8b52bd 100644 --- a/lifter/lifterClass.hpp +++ b/lifter/core/LifterClass.hpp @@ -7,14 +7,14 @@ #include "PathSolver.h" #include "RegisterManager.hpp" #include "ZydisDisassembler.hpp" -#include "ZydisDisassembler_mnemonics.h" -#include "ZydisDisassembler_registers.h" -#include "fileReader.hpp" -#include "icedDisassembler.hpp" -#include "icedDisassembler_mnemonics.h" -#include "icedDisassembler_registers.h" -#include "includes.h" -#include "utils.h" +#include "ZydisDisassemblerMnemonics.h" +#include "ZydisDisassemblerRegisters.h" +#include "FileReader.hpp" +#include "IcedDisassembler.hpp" +#include "IcedDisassemblerMnemonics.h" +#include "IcedDisassemblerRegisters.h" +#include "Includes.h" +#include "Utils.h" #include "llvm/Analysis/AssumptionCache.h" #include "llvm/Analysis/TargetTransformInfo.h" @@ -38,6 +38,8 @@ #include #include +using namespace llvm; + #ifndef DEFINE_FUNCTION #define DEFINE_FUNCTION(name) void lift_##name() #endif diff --git a/lifter/lifterClass_concolic.hpp b/lifter/core/LifterClass_Concolic.hpp similarity index 98% rename from lifter/lifterClass_concolic.hpp rename to lifter/core/LifterClass_Concolic.hpp index 1e03c63..32e0452 100644 --- a/lifter/lifterClass_concolic.hpp +++ b/lifter/core/LifterClass_Concolic.hpp @@ -2,10 +2,10 @@ #define LIFTERCLASS_CONCRETE_H #include "CommonDisassembler.hpp" #include "RegisterManager.hpp" -#include "icedDisassembler.hpp" -#include "icedDisassembler_mnemonics.h" -#include "icedDisassembler_registers.h" -#include "lifterClass.hpp" +#include "IcedDisassembler.hpp" +#include "IcedDisassemblerMnemonics.h" +#include "IcedDisassemblerRegisters.h" +#include "LifterClass.hpp" #include template < diff --git a/lifter/lifterClass_symbolic.hpp b/lifter/core/LifterClass_Symbolic.hpp similarity index 98% rename from lifter/lifterClass_symbolic.hpp rename to lifter/core/LifterClass_Symbolic.hpp index b11ec88..e2c5a77 100644 --- a/lifter/lifterClass_symbolic.hpp +++ b/lifter/core/LifterClass_Symbolic.hpp @@ -2,10 +2,10 @@ #define LIFTERCLASS_SYMBOLIC_H #include "CommonDisassembler.hpp" -#include "icedDisassembler.hpp" -#include "icedDisassembler_mnemonics.h" -#include "icedDisassembler_registers.h" -#include "lifterClass.hpp" +#include "IcedDisassembler.hpp" +#include "IcedDisassemblerMnemonics.h" +#include "IcedDisassemblerRegisters.h" +#include "LifterClass.hpp" #include #include #include diff --git a/lifter/LifterPipeline.hpp b/lifter/core/LifterPipeline.hpp similarity index 97% rename from lifter/LifterPipeline.hpp rename to lifter/core/LifterPipeline.hpp index 16cf159..9aa9a19 100644 --- a/lifter/LifterPipeline.hpp +++ b/lifter/core/LifterPipeline.hpp @@ -2,7 +2,7 @@ #include "LiftDriver.hpp" #include "LifterPipelineStages.hpp" -#include "utils.h" +#include "Utils.h" #include #include diff --git a/lifter/LifterPipelineStages.hpp b/lifter/core/LifterPipelineStages.hpp similarity index 97% rename from lifter/LifterPipelineStages.hpp rename to lifter/core/LifterPipelineStages.hpp index 222b0ee..6f41e84 100644 --- a/lifter/LifterPipelineStages.hpp +++ b/lifter/core/LifterPipelineStages.hpp @@ -1,8 +1,8 @@ #pragma once #include "RuntimeImageContext.hpp" -#include "lifterClass_concolic.hpp" -#include "utils.h" +#include "LifterClass_Concolic.hpp" +#include "Utils.h" #include #include #include diff --git a/lifter/LifterStages.hpp b/lifter/core/LifterStages.hpp similarity index 98% rename from lifter/LifterStages.hpp rename to lifter/core/LifterStages.hpp index dda628a..0de6809 100644 --- a/lifter/LifterStages.hpp +++ b/lifter/core/LifterStages.hpp @@ -2,7 +2,7 @@ #include "MemoryPolicySetup.hpp" #include "RuntimeImageContext.hpp" -#include "utils.h" +#include "Utils.h" #include #include diff --git a/lifter/MergenPB.hpp b/lifter/core/MergenPB.hpp similarity index 98% rename from lifter/MergenPB.hpp rename to lifter/core/MergenPB.hpp index e11bf58..51e2fb8 100644 --- a/lifter/MergenPB.hpp +++ b/lifter/core/MergenPB.hpp @@ -1,7 +1,7 @@ #include "CustomPasses.hpp" -#include "lifterClass.hpp" -#include "utils.h" +#include "LifterClass.hpp" +#include "Utils.h" #include #include #include diff --git a/lifter/OperandUtils.h b/lifter/core/OperandUtils.h similarity index 100% rename from lifter/OperandUtils.h rename to lifter/core/OperandUtils.h diff --git a/lifter/RegisterManager.hpp b/lifter/core/RegisterManager.hpp similarity index 99% rename from lifter/RegisterManager.hpp rename to lifter/core/RegisterManager.hpp index 1a9421a..3e4f917 100644 --- a/lifter/RegisterManager.hpp +++ b/lifter/core/RegisterManager.hpp @@ -1,7 +1,7 @@ #pragma once #include "CommonRegisters.h" -#include "utils.h" +#include "Utils.h" #include #include #include diff --git a/lifter/RuntimeImageContext.hpp b/lifter/core/RuntimeImageContext.hpp similarity index 99% rename from lifter/RuntimeImageContext.hpp rename to lifter/core/RuntimeImageContext.hpp index c9b4319..ebbd82b 100644 --- a/lifter/RuntimeImageContext.hpp +++ b/lifter/core/RuntimeImageContext.hpp @@ -1,6 +1,6 @@ #pragma once -#include "fileReader.hpp" +#include "FileReader.hpp" #include "nt/nt_headers.hpp" #include #include diff --git a/lifter/Semantics.h b/lifter/core/Semantics.h similarity index 100% rename from lifter/Semantics.h rename to lifter/core/Semantics.h diff --git a/lifter/utils.cpp b/lifter/core/Utils.cpp similarity index 99% rename from lifter/utils.cpp rename to lifter/core/Utils.cpp index 8850ea7..dabe2e0 100644 --- a/lifter/utils.cpp +++ b/lifter/core/Utils.cpp @@ -1,4 +1,4 @@ -#include "utils.h" +#include "Utils.h" #include "llvm/IR/Value.h" #include #include diff --git a/lifter/utils.h b/lifter/core/Utils.h similarity index 100% rename from lifter/utils.h rename to lifter/core/Utils.h diff --git a/lifter/CommonDisassembler.hpp b/lifter/disasm/CommonDisassembler.hpp similarity index 99% rename from lifter/CommonDisassembler.hpp rename to lifter/disasm/CommonDisassembler.hpp index 0c132f9..a1cec09 100644 --- a/lifter/CommonDisassembler.hpp +++ b/lifter/disasm/CommonDisassembler.hpp @@ -3,8 +3,8 @@ #include "CommonMnemonics.h" #include "CommonRegisters.h" -#include "ZydisDisassembler_mnemonics.h" -#include "ZydisDisassembler_registers.h" +#include "ZydisDisassemblerMnemonics.h" +#include "ZydisDisassemblerRegisters.h" #include #include #include diff --git a/lifter/CommonMnemonics.h b/lifter/disasm/CommonMnemonics.h similarity index 100% rename from lifter/CommonMnemonics.h rename to lifter/disasm/CommonMnemonics.h diff --git a/lifter/CommonRegisters.h b/lifter/disasm/CommonRegisters.h similarity index 100% rename from lifter/CommonRegisters.h rename to lifter/disasm/CommonRegisters.h diff --git a/lifter/icedDisassembler.hpp b/lifter/disasm/IcedDisassembler.hpp similarity index 99% rename from lifter/icedDisassembler.hpp rename to lifter/disasm/IcedDisassembler.hpp index 47f175f..125edcc 100644 --- a/lifter/icedDisassembler.hpp +++ b/lifter/disasm/IcedDisassembler.hpp @@ -4,9 +4,9 @@ #include "CommonDisassembler.hpp" #include "CommonMnemonics.h" #include "CommonRegisters.h" -#include "icedDisassembler_mnemonics.h" -#include "icedDisassembler_registers.h" -#include "utils.h" +#include "IcedDisassemblerMnemonics.h" +#include "IcedDisassemblerRegisters.h" +#include "Utils.h" #include #include diff --git a/lifter/icedDisassembler_mnemonics.h b/lifter/disasm/IcedDisassemblerMnemonics.h similarity index 100% rename from lifter/icedDisassembler_mnemonics.h rename to lifter/disasm/IcedDisassemblerMnemonics.h diff --git a/lifter/icedDisassembler_registers.h b/lifter/disasm/IcedDisassemblerRegisters.h similarity index 100% rename from lifter/icedDisassembler_registers.h rename to lifter/disasm/IcedDisassemblerRegisters.h diff --git a/lifter/ZydisDisassembler.hpp b/lifter/disasm/ZydisDisassembler.hpp similarity index 99% rename from lifter/ZydisDisassembler.hpp rename to lifter/disasm/ZydisDisassembler.hpp index 69769b3..c9b2ecb 100644 --- a/lifter/ZydisDisassembler.hpp +++ b/lifter/disasm/ZydisDisassembler.hpp @@ -5,8 +5,8 @@ #include "CommonDisassembler.hpp" #include "CommonMnemonics.h" #include "CommonRegisters.h" -#include "ZydisDisassembler_mnemonics.h" -#include "utils.h" +#include "ZydisDisassemblerMnemonics.h" +#include "Utils.h" #include #include #include diff --git a/lifter/ZydisDisassembler_mnemonics.h b/lifter/disasm/ZydisDisassemblerMnemonics.h similarity index 100% rename from lifter/ZydisDisassembler_mnemonics.h rename to lifter/disasm/ZydisDisassemblerMnemonics.h diff --git a/lifter/ZydisDisassembler_registers.h b/lifter/disasm/ZydisDisassemblerRegisters.h similarity index 100% rename from lifter/ZydisDisassembler_registers.h rename to lifter/disasm/ZydisDisassemblerRegisters.h diff --git a/lifter/fileReader.hpp b/lifter/memory/FileReader.hpp similarity index 100% rename from lifter/fileReader.hpp rename to lifter/memory/FileReader.hpp diff --git a/lifter/GEPTracker.h b/lifter/memory/GEPTracker.h similarity index 100% rename from lifter/GEPTracker.h rename to lifter/memory/GEPTracker.h diff --git a/lifter/GEPTracker.ipp b/lifter/memory/GEPTracker.ipp similarity index 99% rename from lifter/GEPTracker.ipp rename to lifter/memory/GEPTracker.ipp index 6a46b1e..e7cb733 100644 --- a/lifter/GEPTracker.ipp +++ b/lifter/memory/GEPTracker.ipp @@ -3,8 +3,8 @@ #include "GEPTracker.h" #include "MemoryPolicy.hpp" #include "OperandUtils.ipp" -#include "lifterClass.hpp" -#include "utils.h" +#include "LifterClass.hpp" +#include "Utils.h" #include "llvm/Analysis/MemorySSA.h" #include #include diff --git a/lifter/MemoryPolicy.hpp b/lifter/memory/MemoryPolicy.hpp similarity index 100% rename from lifter/MemoryPolicy.hpp rename to lifter/memory/MemoryPolicy.hpp diff --git a/lifter/MemoryPolicySetup.hpp b/lifter/memory/MemoryPolicySetup.hpp similarity index 95% rename from lifter/MemoryPolicySetup.hpp rename to lifter/memory/MemoryPolicySetup.hpp index 81410b1..b37f04e 100644 --- a/lifter/MemoryPolicySetup.hpp +++ b/lifter/memory/MemoryPolicySetup.hpp @@ -1,6 +1,6 @@ #pragma once -#include "lifterClass_concolic.hpp" +#include "LifterClass_Concolic.hpp" inline void configureDefaultMemoryPolicy(lifterConcolic<>* lifter) { lifter->memoryPolicy.setDefaultMode(MemoryAccessMode::SYMBOLIC); diff --git a/lifter/OperandUtils.ipp b/lifter/semantics/OperandUtils.ipp similarity index 99% rename from lifter/OperandUtils.ipp rename to lifter/semantics/OperandUtils.ipp index ddf0907..7703a15 100644 --- a/lifter/OperandUtils.ipp +++ b/lifter/semantics/OperandUtils.ipp @@ -4,8 +4,8 @@ #include "CommonDisassembler.hpp" #include "GEPTracker.ipp" #include "ZydisDisassembler.hpp" -#include "lifterClass.hpp" -#include "utils.h" +#include "LifterClass.hpp" +#include "Utils.h" #include #include #include diff --git a/lifter/pp_macros.hpp b/lifter/semantics/PPMacros.hpp similarity index 100% rename from lifter/pp_macros.hpp rename to lifter/semantics/PPMacros.hpp diff --git a/lifter/Semantics.ipp b/lifter/semantics/Semantics.ipp similarity index 98% rename from lifter/Semantics.ipp rename to lifter/semantics/Semantics.ipp index 696aaa1..29a3166 100644 --- a/lifter/Semantics.ipp +++ b/lifter/semantics/Semantics.ipp @@ -2,10 +2,10 @@ #include "FunctionSignatures.hpp" #include "OperandUtils.ipp" #include "PathSolver.ipp" -#include "fileReader.hpp" -#include "includes.h" -#include "lifterClass.hpp" -#include "utils.h" +#include "FileReader.hpp" +#include "Includes.h" +#include "LifterClass.hpp" +#include "Utils.h" #include #include #include @@ -40,7 +40,7 @@ int branchnumber = 0; // Dispatch machinery -#include "pp_macros.hpp" +#include "PPMacros.hpp" MERGEN_LIFTER_DEFINITION_TEMPLATES(void)::liftInstructionSemantics() { diff --git a/lifter/Semantics_Arithmetic.ipp b/lifter/semantics/Semantics_Arithmetic.ipp similarity index 100% rename from lifter/Semantics_Arithmetic.ipp rename to lifter/semantics/Semantics_Arithmetic.ipp diff --git a/lifter/Semantics_Bitwise.ipp b/lifter/semantics/Semantics_Bitwise.ipp similarity index 100% rename from lifter/Semantics_Bitwise.ipp rename to lifter/semantics/Semantics_Bitwise.ipp diff --git a/lifter/Semantics_ControlFlow.ipp b/lifter/semantics/Semantics_ControlFlow.ipp similarity index 100% rename from lifter/Semantics_ControlFlow.ipp rename to lifter/semantics/Semantics_ControlFlow.ipp diff --git a/lifter/Semantics_Helpers.ipp b/lifter/semantics/Semantics_Helpers.ipp similarity index 100% rename from lifter/Semantics_Helpers.ipp rename to lifter/semantics/Semantics_Helpers.ipp diff --git a/lifter/Semantics_Misc.ipp b/lifter/semantics/Semantics_Misc.ipp similarity index 100% rename from lifter/Semantics_Misc.ipp rename to lifter/semantics/Semantics_Misc.ipp diff --git a/lifter/x86_64_opcodes.x b/lifter/semantics/x86_64_opcodes.x similarity index 100% rename from lifter/x86_64_opcodes.x rename to lifter/semantics/x86_64_opcodes.x diff --git a/lifter/test_instructions.cpp b/lifter/test/TestInstructions.cpp similarity index 99% rename from lifter/test_instructions.cpp rename to lifter/test/TestInstructions.cpp index 28d5632..e2a0d44 100644 --- a/lifter/test_instructions.cpp +++ b/lifter/test/TestInstructions.cpp @@ -1,8 +1,8 @@ -#include "test_instructions.h" +#include "TestInstructions.h" #ifdef MERGEN_TEST -#include "tester.hpp" +#include "Tester.hpp" #include #include @@ -662,7 +662,7 @@ int buildFullHandlerSeed(const std::string& outputPath, int testInit(const std::string& suiteFilter) { const char* vectorsEnv = std::getenv("MERGEN_TEST_VECTORS"); const std::string vectorsPath = - vectorsEnv ? vectorsEnv : "lifter/test_vectors/oracle_vectors.json"; + vectorsEnv ? vectorsEnv : "lifter/test/test_vectors/oracle_vectors.json"; std::vector testCases; std::string loadError; diff --git a/lifter/test_instructions.h b/lifter/test/TestInstructions.h similarity index 100% rename from lifter/test_instructions.h rename to lifter/test/TestInstructions.h diff --git a/lifter/tester.hpp b/lifter/test/Tester.hpp similarity index 99% rename from lifter/tester.hpp rename to lifter/test/Tester.hpp index 76252b4..2b8678e 100644 --- a/lifter/tester.hpp +++ b/lifter/test/Tester.hpp @@ -1,6 +1,6 @@ #pragma once -#include "lifterClass_concolic.hpp" +#include "LifterClass_Concolic.hpp" #include #include diff --git a/lifter/test_vectors/golden_ir_hashes.json b/lifter/test/test_vectors/golden_ir_hashes.json similarity index 100% rename from lifter/test_vectors/golden_ir_hashes.json rename to lifter/test/test_vectors/golden_ir_hashes.json diff --git a/lifter/test_vectors/oracle_vectors.json b/lifter/test/test_vectors/oracle_vectors.json similarity index 100% rename from lifter/test_vectors/oracle_vectors.json rename to lifter/test/test_vectors/oracle_vectors.json diff --git a/lifter/test_vectors/oracle_vectors_full_handlers.json b/lifter/test/test_vectors/oracle_vectors_full_handlers.json similarity index 99% rename from lifter/test_vectors/oracle_vectors_full_handlers.json rename to lifter/test/test_vectors/oracle_vectors_full_handlers.json index d2dbc04..f424436 100644 --- a/lifter/test_vectors/oracle_vectors_full_handlers.json +++ b/lifter/test/test_vectors/oracle_vectors_full_handlers.json @@ -1,6 +1,6 @@ { "schema": "mergen-oracle-v1", - "generated_at_utc": "2026-03-05T19:49:19.307536+00:00", + "generated_at_utc": "2026-03-06T15:07:06.954438+00:00", "source_seed_schema": "mergen-oracle-seed-v1", "providers": [ "unicorn" diff --git a/scripts/rewrite/build_full_handler_seed.py b/scripts/rewrite/build_full_handler_seed.py index 7de25de..7d52361 100644 --- a/scripts/rewrite/build_full_handler_seed.py +++ b/scripts/rewrite/build_full_handler_seed.py @@ -458,7 +458,7 @@ def main() -> None: parser = argparse.ArgumentParser( description="Build full handler seed using Capstone auto-discovery" ) - parser.add_argument("--opcode-file", default="lifter/x86_64_opcodes.x") + parser.add_argument("--opcode-file", default="lifter/semantics/x86_64_opcodes.x") parser.add_argument("--base-seed", default="scripts/rewrite/oracle_seed_vectors.json") parser.add_argument("--out-seed", default="scripts/rewrite/oracle_seed_full_handlers.json") parser.add_argument("--iterations", type=int, default=12) diff --git a/scripts/rewrite/collect_instruction_tests.py b/scripts/rewrite/collect_instruction_tests.py index 70ada4d..7fe0b56 100644 --- a/scripts/rewrite/collect_instruction_tests.py +++ b/scripts/rewrite/collect_instruction_tests.py @@ -176,17 +176,17 @@ def main(): ) parser.add_argument( "--opcode-file", - default="lifter/x86_64_opcodes.x", + default="lifter/semantics/x86_64_opcodes.x", help="Path to opcode dispatch table", ) parser.add_argument( "--vectors-file", - default="lifter/test_vectors/oracle_vectors.json", + default="lifter/test/test_vectors/oracle_vectors.json", help="Path to generated oracle vectors JSON", ) parser.add_argument( "--legacy-tests-file", - default="lifter/test_instructions.cpp", + default="lifter/test/TestInstructions.cpp", help="Optional legacy source file for extra signal extraction", ) parser.add_argument( diff --git a/scripts/rewrite/generate_flag_stress_vectors.py b/scripts/rewrite/generate_flag_stress_vectors.py index 348cea5..a6e3b2c 100644 --- a/scripts/rewrite/generate_flag_stress_vectors.py +++ b/scripts/rewrite/generate_flag_stress_vectors.py @@ -12,8 +12,8 @@ from datetime import datetime, timezone from pathlib import Path from typing import Dict, Iterable, List, Tuple -DEFAULT_INPUT_VECTORS = Path("lifter/test_vectors/oracle_vectors_full_handlers.json") -DEFAULT_OUTPUT_VECTORS = Path("lifter/test_vectors/oracle_vectors_flagstress.json") +DEFAULT_INPUT_VECTORS = Path("lifter/test/test_vectors/oracle_vectors_full_handlers.json") +DEFAULT_OUTPUT_VECTORS = Path("lifter/test/test_vectors/oracle_vectors_flagstress.json") DEFAULT_SEMANTICS = Path("lifter/Semantics.ipp") DEFAULT_CODE_ADDRESS = 0x1000000 diff --git a/scripts/rewrite/generate_oracle_vectors.py b/scripts/rewrite/generate_oracle_vectors.py index cf44190..136393e 100644 --- a/scripts/rewrite/generate_oracle_vectors.py +++ b/scripts/rewrite/generate_oracle_vectors.py @@ -215,7 +215,7 @@ def main(): ) parser.add_argument( "--out", - default="lifter/test_vectors/oracle_vectors.json", + default="lifter/test/test_vectors/oracle_vectors.json", help="Generated oracle output JSON", ) parser.add_argument( diff --git a/scripts/rewrite/report_coverage.py b/scripts/rewrite/report_coverage.py index ef59644..0ea2b1c 100644 --- a/scripts/rewrite/report_coverage.py +++ b/scripts/rewrite/report_coverage.py @@ -11,12 +11,12 @@ def main(): parser = argparse.ArgumentParser(description="Report handler test coverage") parser.add_argument( "--vectors", - default="lifter/test_vectors/oracle_vectors.json", + default="lifter/test/test_vectors/oracle_vectors.json", help="Oracle vectors JSON path", ) parser.add_argument( "--opcodes", - default="lifter/x86_64_opcodes.x", + default="lifter/semantics/x86_64_opcodes.x", help="Opcode handler definition file", ) parser.add_argument("--json", action="store_true", help="Output JSON instead of text") diff --git a/scripts/rewrite/run_all_handlers.cmd b/scripts/rewrite/run_all_handlers.cmd index 0bc40e2..167c877 100644 --- a/scripts/rewrite/run_all_handlers.cmd +++ b/scripts/rewrite/run_all_handlers.cmd @@ -15,7 +15,7 @@ if errorlevel 1 exit /b 1 set "FULL_SEED=%~dp0oracle_seed_full_handlers.json" set "ENRICHED_SEED=%~dp0oracle_seed_full_handlers_enriched.json" -set "FULL_VECTORS=%~dp0..\..\lifter\test_vectors\oracle_vectors_full_handlers.json" +set "FULL_VECTORS=%~dp0..\..\lifter\test\test_vectors\oracle_vectors_full_handlers.json" call "%~dp0build_full_handler_seed.cmd" --out-seed "%FULL_SEED%" if errorlevel 1 exit /b 1 diff --git a/scripts/rewrite/run_flagstress.cmd b/scripts/rewrite/run_flagstress.cmd index 9ce823d..a8e9dfb 100644 --- a/scripts/rewrite/run_flagstress.cmd +++ b/scripts/rewrite/run_flagstress.cmd @@ -4,7 +4,7 @@ setlocal call "%~dp0generate_flag_stress_vectors.cmd" if errorlevel 1 exit /b 1 -set "MERGEN_TEST_VECTORS=%~dp0..\..\lifter\test_vectors\oracle_vectors_flagstress.json" +set "MERGEN_TEST_VECTORS=%~dp0..\..\lifter\test\test_vectors\oracle_vectors_flagstress.json" set "SKIP_ORACLE_GENERATION=1" set "MERGEN_TEST_CHECK_FLAGS=1" diff --git a/test.py b/test.py index 75eafc8..c5652f0 100644 --- a/test.py +++ b/test.py @@ -12,10 +12,10 @@ from typing import Dict, List ROOT = Path(__file__).resolve().parent REWRITE_DIR = ROOT / "scripts" / "rewrite" -FULL_VECTORS = ROOT / "lifter" / "test_vectors" / "oracle_vectors_full_handlers.json" -DEFAULT_VECTORS = ROOT / "lifter" / "test_vectors" / "oracle_vectors.json" +FULL_VECTORS = ROOT / "lifter" / "test" / "test_vectors" / "oracle_vectors_full_handlers.json" +DEFAULT_VECTORS = ROOT / "lifter" / "test" / "test_vectors" / "oracle_vectors.json" IR_OUTPUT_DIR = ROOT.parent / "rewrite-regression-work" / "ir_outputs" -GOLDEN_HASHES_FILE = ROOT / "lifter" / "test_vectors" / "golden_ir_hashes.json" +GOLDEN_HASHES_FILE = ROOT / "lifter" / "test" / "test_vectors" / "golden_ir_hashes.json" def _run(argv: List[str], extra_env: Dict[str, str] | None = None) -> None: