7 #ifndef RETDEC_BIN2LLVMIR_PROVIDERS_CONFIG_H
8 #define RETDEC_BIN2LLVMIR_PROVIDERS_CONFIG_H
14 #include <llvm/IR/Instructions.h>
15 #include <llvm/IR/Module.h>
39 const llvm::Function* fnc);
47 const llvm::Function* fnc);
57 const llvm::Value* val);
59 const llvm::Value* val);
64 const llvm::GlobalVariable* gv);
71 const std::string& name,
75 const llvm::GlobalVariable* gv);
82 const llvm::Value* val);
84 const llvm::Value* val);
92 const std::string& realName);
96 const llvm::Value* val);
101 const llvm::GlobalVariable* gv,
103 bool fromDebug =
false,
104 const std::string& realName =
"",
105 const std::string& cryptoDesc =
"");
108 const llvm::AllocaInst* sv,
110 bool fromDebug =
false,
111 const std::string& realName = std::string());
114 const llvm::Function* fnc,
117 bool fromDebug =
false);
121 const std::string& name);
176 std::string& description,
177 llvm::Type*& type)
const;
static Config * getConfig(llvm::Module *m)
Definition: config.cpp:743
static void clear()
Definition: config.cpp:767
static std::map< llvm::Module *, Config > _module2config
Definition: config.h:211
static Config * addConfig(llvm::Module *m, retdec::config::Config &c)
Definition: config.cpp:737
static void doFinalization(llvm::Module *m)
Definition: config.cpp:755
static Config fromConfig(llvm::Module *m, retdec::config::Config &c)
Definition: config.cpp:44
retdec::common::Object * getConfigStackVariable(const llvm::Value *val)
Definition: config.cpp:207
llvm::GlobalVariable * getGlobalDummy()
Definition: config.cpp:449
bool getCryptoPattern(retdec::common::Address addr, std::string &name, std::string &description, llvm::Type *&type) const
Definition: config.cpp:628
llvm::Function * _branchFunction
Definition: config.h:191
retdec::common::Address getFunctionAddress(const llvm::Function *fnc)
Definition: config.cpp:95
retdec::common::Function * getConfigFunction(const llvm::Function *fnc)
Definition: config.cpp:102
llvm::Function * getLlvmReturnPseudoFunction() const
Definition: config.cpp:492
std::optional< unsigned > getConfigRegisterNumber(const llvm::Value *val)
Definition: config.cpp:438
bool isPseudoAsmFunction(llvm::Function *f)
Definition: config.cpp:612
llvm::CallInst * isLlvmReturnPseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:500
std::map< IntrinsicFunctionCreatorPtr, llvm::Function * > _intrinsicFunctions
Definition: config.h:197
llvm::Function * _callFunction
Definition: config.h:189
llvm::CallInst * isLlvmBranchPseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:518
void setLlvmReturnPseudoFunction(llvm::Function *f)
Definition: config.cpp:488
const retdec::common::Object * getConfigGlobalVariable(const llvm::GlobalVariable *gv)
Definition: config.cpp:135
llvm::CallInst * isLlvmX87LoadPseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:584
llvm::CallInst * isLlvmX87DataLoadPseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:572
llvm::Function * _x87DataStoreFunction
Definition: config.h:194
llvm::CallInst * isLlvmX87StorePseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:578
void setLlvmBranchPseudoFunction(llvm::Function *f)
Definition: config.cpp:506
llvm::CallInst * isLlvmX87DataStorePseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:554
llvm::Function * getLlvmBranchPseudoFunction() const
Definition: config.cpp:510
void setLlvmX87DataStorePseudoFunction(llvm::Function *f)
Definition: config.cpp:542
llvm::Function * getLlvmX87DataStorePseudoFunction() const
Definition: config.cpp:546
bool isLlvmCallPseudoFunction(llvm::Value *f)
Definition: config.cpp:478
llvm::CallInst * isLlvmAnyBranchPseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:590
llvm::Function * _returnFunction
Definition: config.h:190
llvm::Function * getIntrinsicFunction(IntrinsicFunctionCreatorPtr f)
Definition: config.cpp:120
llvm::CallInst * isLlvmCallPseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:482
llvm::AllocaInst * getLlvmStackVariable(llvm::Function *fnc, int offset)
Definition: config.cpp:229
static Config empty(llvm::Module *m)
Definition: config.cpp:36
bool isLlvmBranchPseudoFunction(llvm::Value *f)
Definition: config.cpp:514
bool isGlobalVariable(const llvm::Value *val)
Definition: config.cpp:184
bool isLlvmCondBranchPseudoFunction(llvm::Value *f)
Definition: config.cpp:532
void tagFunctionsWithUsedCryptoGlobals()
Definition: config.cpp:694
retdec::config::Config & getConfig()
Definition: config.cpp:79
bool isLlvmReturnPseudoFunction(llvm::Value *f)
Definition: config.cpp:496
llvm::Function * getLlvmFunction(retdec::common::Address startAddr)
Definition: config.cpp:89
llvm::Module * _module
Definition: config.h:183
llvm::Function * getLlvmX87DataLoadPseudoFunction() const
Definition: config.cpp:564
Config(retdec::config::Config &c)
Definition: config.cpp:30
llvm::Function * getLlvmCondBranchPseudoFunction() const
Definition: config.cpp:528
retdec::common::Function * renameFunction(retdec::common::Function *fnc, const std::string &name)
Definition: config.cpp:404
bool isStackVariable(const llvm::Value *val)
Definition: config.cpp:296
const retdec::common::Object * insertStackVariable(const llvm::AllocaInst *sv, int offset, bool fromDebug=false, const std::string &realName=std::string())
Definition: config.cpp:333
retdec::common::Address getGlobalAddress(const llvm::GlobalVariable *gv)
Definition: config.cpp:176
const retdec::common::Object * getConfigRegister(const llvm::Value *val)
Definition: config.cpp:431
llvm::Function * getLlvmCallPseudoFunction() const
Definition: config.cpp:474
llvm::Function *(*)(llvm::Module *) IntrinsicFunctionCreatorPtr
Definition: config.h:51
bool isLlvmX87DataStorePseudoFunction(llvm::Value *f)
Definition: config.cpp:550
llvm::GlobalVariable * _globalDummy
Definition: config.h:187
std::set< llvm::Function * > _pseudoAsmFunctions
Definition: config.h:198
void doFinalization()
Definition: config.cpp:69
std::optional< int > getStackVariableOffset(const llvm::Value *val)
Definition: config.cpp:301
const retdec::common::Function * insertFunction(const llvm::Function *fnc, retdec::common::Address start=retdec::common::Address::Undefined, retdec::common::Address end=retdec::common::Address::Undefined, bool fromDebug=false)
Definition: config.cpp:370
llvm::GlobalVariable * getLlvmGlobalVariable(retdec::common::Address address)
Definition: config.cpp:147
llvm::CallInst * isLlvmCondBranchPseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:536
void setLlvmX87DataLoadPseudoFunction(llvm::Function *f)
Definition: config.cpp:560
llvm::CallInst * isLlvmAnyUncondBranchPseudoFunctionCall(llvm::Value *c)
Definition: config.cpp:599
retdec::config::Config & _configDB
Definition: config.h:186
void setLlvmCallPseudoFunction(llvm::Function *f)
Definition: config.cpp:470
fs::path getOutputDirectory()
Definition: config.cpp:464
const retdec::common::Object * insertGlobalVariable(const llvm::GlobalVariable *gv, retdec::common::Address address, bool fromDebug=false, const std::string &realName="", const std::string &cryptoDesc="")
Definition: config.cpp:310
llvm::Function * _condBranchFunction
Definition: config.h:192
llvm::CallInst * isPseudoAsmFunctionCall(llvm::Value *c)
Definition: config.cpp:617
void addPseudoAsmFunction(llvm::Function *f)
Definition: config.cpp:607
llvm::Function * _x87DataLoadFunction
Definition: config.h:195
bool isLlvmX87DataLoadPseudoFunction(llvm::Value *f)
Definition: config.cpp:568
const retdec::common::Object * getConfigLocalVariable(const llvm::Value *val)
Definition: config.cpp:190
void setLlvmCondBranchPseudoFunction(llvm::Function *f)
Definition: config.cpp:524
static const uint64_t Undefined
Definition: address.h:47
Definition: function.h:36
Address, address pair and other derived class representation.
Decompilation configuration manipulation.
Wrapper for conditional include of C++17 filesystem feature.
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19