mirror of
https://github.com/NaC-L/Mergen.git
synced 2026-05-12 09:40:34 +00:00
1ed00cc67e
Directory structure: lifter/core/ - LifterClass, pipeline, drivers, application, utils lifter/semantics/ - Semantics*.ipp, OperandUtils.ipp, opcodes lifter/disasm/ - Disassembler backends, mnemonic/register mappings lifter/memory/ - GEPTracker, MemoryPolicy, FileReader lifter/analysis/ - PathSolver, CustomPasses lifter/test/ - TestInstructions, Tester, test_vectors/ Naming convention standardized to PascalCase: fileReader.hpp -> FileReader.hpp lifterClass.hpp -> LifterClass.hpp icedDisassembler* -> IcedDisassembler* utils.h/cpp -> Utils.h/cpp includes.h -> Includes.h pp_macros.hpp -> PPMacros.hpp test_instructions* -> TestInstructions* tester.hpp -> Tester.hpp Include resolution uses cmake include-directories so no path prefixes needed in #include directives. All script paths updated for new test_vectors and opcodes locations.
19 lines
590 B
C
19 lines
590 B
C
#pragma once
|
|
#include "MemoryPolicy.hpp"
|
|
#include <llvm/IR/Function.h>
|
|
#include <llvm/IR/Value.h>
|
|
|
|
enum PATH_info {
|
|
PATH_unsolved = 0,
|
|
PATH_solved = 1,
|
|
PATH_multi_solved = 2, // >2 targets resolved via SwitchInst
|
|
};
|
|
|
|
PATH_info getConstraintVal(llvm::Function* function, llvm::Value* constraint,
|
|
uint64_t& dest);
|
|
|
|
void final_optpass(llvm::Function* clonedFuncx, llvm::Value* mem,
|
|
uint8_t* filebase, MemoryPolicy memoryPolicy);
|
|
|
|
PATH_info solvePath(llvm::Function* function, uint64_t& dest,
|
|
llvm::Value* simplifyValue); |