7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_PARAM_RETURN_DATA_ENTRIES_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_PARAM_RETURN_DATA_ENTRIES_H
14 #include <llvm/IR/Function.h>
15 #include <llvm/IR/Instructions.h>
28 void setRetStores(std::vector<llvm::StoreInst*>&& stores);
29 void setRetStores(
const std::vector<llvm::StoreInst*>& stores);
32 void setRetValues(
const std::vector<llvm::Value*>& values);
37 const std::vector<llvm::StoreInst*>&
retStores()
const;
38 const std::vector<llvm::Value*>&
retValues()
const;
52 void addArg(llvm::Value* arg);
56 std::vector<llvm::Type*>&& types,
57 std::vector<std::string>&& names = {});
60 const std::vector<llvm::Value*>&
args()
const;
61 const std::vector<llvm::Type*>&
argTypes()
const;
62 const std::vector<std::string>&
argNames()
const;
65 std::vector<llvm::Value*>
_args;
96 const std::vector<ReturnEntry>&
retEntries()
const;
115 llvm::CallInst* call,
124 void setArgStores(std::vector<llvm::StoreInst*>&& stores);
126 void setRetLoads(std::vector<llvm::LoadInst*>&& loads);
134 const std::vector<llvm::StoreInst*>&
argStores()
const;
135 const std::vector<llvm::Value*>&
retValues()
const;
136 const std::vector<llvm::LoadInst*>&
retLoads()
const;
Calling convention information.
Definition: data_entries.h:110
void setArgStores(std::vector< llvm::StoreInst * > &&stores)
Definition: data_entries.cpp:294
void setFormatString(const std::string &fmt)
Definition: data_entries.cpp:289
std::string _fmtStr
Definition: data_entries.h:142
std::vector< llvm::StoreInst * > _argStores
Definition: data_entries.h:146
const FunctionEntry * _baseFunction
Definition: data_entries.h:139
std::vector< llvm::LoadInst * > _retLoads
Definition: data_entries.h:144
const std::vector< llvm::StoreInst * > & argStores() const
Definition: data_entries.cpp:369
const std::vector< llvm::LoadInst * > & retLoads() const
Definition: data_entries.cpp:379
CallEntry(llvm::CallInst *call, const FunctionEntry *base=nullptr)
Definition: data_entries.cpp:275
void setArgs(std::vector< llvm::Value * > &&args)
Definition: data_entries.cpp:307
std::vector< llvm::Value * > _retValues
Definition: data_entries.h:145
void addRetLoad(llvm::LoadInst *load)
Definition: data_entries.cpp:281
std::string getFormatString() const
Definition: data_entries.cpp:364
llvm::CallInst * _callInst
Definition: data_entries.h:141
llvm::CallInst * getCallInstruction() const
Definition: data_entries.cpp:354
const FunctionEntry * getBaseFunction() const
Definition: data_entries.cpp:359
void setRetValues(std::vector< llvm::Value * > &&values)
Definition: data_entries.cpp:337
const std::vector< llvm::Value * > & retValues() const
Definition: data_entries.cpp:374
void setRetLoads(std::vector< llvm::LoadInst * > &&loads)
Definition: data_entries.cpp:325
Definition: data_entries.h:48
const std::vector< llvm::Value * > & args() const
Definition: data_entries.cpp:159
std::vector< std::string > _argNames
Definition: data_entries.h:67
void setVoidarg(bool voidarg=true)
Definition: data_entries.cpp:132
const std::vector< llvm::Type * > & argTypes() const
Definition: data_entries.cpp:164
std::vector< llvm::Value * > _args
Definition: data_entries.h:65
const std::vector< std::string > & argNames() const
Definition: data_entries.cpp:169
void addArg(llvm::Value *arg)
Definition: data_entries.cpp:127
bool isVoidarg() const
Definition: data_entries.cpp:122
std::vector< llvm::Type * > _argTypes
Definition: data_entries.h:66
bool _voidarg
Definition: data_entries.h:70
void setArgTypes(std::vector< llvm::Type * > &&types, std::vector< std::string > &&names={})
Definition: data_entries.cpp:137
Definition: data_entries.h:150
llvm::Function * getFunction() const
Definition: data_entries.cpp:420
llvm::Value * getValue() const
Definition: data_entries.cpp:425
llvm::Value * _calledValue
Definition: data_entries.h:183
CallEntry * createCallEntry(llvm::CallInst *call)
Definition: data_entries.cpp:493
void setIsFullyDecoded(bool res=true)
Definition: data_entries.cpp:405
std::size_t numberOfCalls() const
Definition: data_entries.cpp:435
bool _decoded
Definition: data_entries.h:186
bool isValue() const
Definition: data_entries.cpp:400
DataFlowEntry(llvm::Value *called)
Definition: data_entries.cpp:390
bool hasBranches() const
Definition: data_entries.cpp:453
bool isFullyDecoded() const
Definition: data_entries.cpp:410
void setCalledValue(llvm::Value *called)
Definition: data_entries.cpp:430
bool hasDefinition() const
Definition: data_entries.cpp:415
bool storesOnRawStack(const Abi &abi) const
Definition: data_entries.cpp:467
bool isFunction() const
Definition: data_entries.cpp:395
std::vector< CallEntry > _calls
Definition: data_entries.h:185
const std::vector< CallEntry > & callEntries() const
Definition: data_entries.cpp:499
Definition: data_entries.h:74
ReturnEntry * createRetEntry(llvm::ReturnInst *ret)
Definition: data_entries.cpp:195
void setVariadic(bool variadic=true)
Definition: data_entries.cpp:202
llvm::CallInst * getWrappedCall() const
Definition: data_entries.cpp:249
llvm::Type * _retType
Definition: data_entries.h:101
const std::vector< ReturnEntry > & retEntries() const
Definition: data_entries.cpp:259
llvm::Value * getRetValue() const
Definition: data_entries.cpp:244
void setArgs(std::vector< llvm::Value * > &&args)
Definition: data_entries.cpp:207
CallingConvention::ID _callconv
Definition: data_entries.h:104
std::vector< ReturnEntry > _retEntries
Definition: data_entries.h:106
void setRetType(llvm::Type *type)
Definition: data_entries.cpp:217
bool _variadic
Definition: data_entries.h:103
void setWrappedCall(llvm::CallInst *wrap)
Definition: data_entries.cpp:212
bool isVariadic() const
Definition: data_entries.cpp:180
void setCallingConvention(const CallingConvention::ID &cc)
Definition: data_entries.cpp:227
llvm::Type * getRetType() const
Definition: data_entries.cpp:239
void addRetEntry(const ReturnEntry &ret)
Definition: data_entries.cpp:190
bool isWrapper() const
Definition: data_entries.cpp:185
llvm::Value * _retVal
Definition: data_entries.h:102
CallingConvention::ID getCallingConvention() const
Definition: data_entries.cpp:254
llvm::CallInst * _wrap
Definition: data_entries.h:100
void setRetValue(llvm::Value *val)
Definition: data_entries.cpp:222
Definition: data_entries.h:21
const std::vector< llvm::Value * > & retValues() const
Definition: data_entries.cpp:111
std::vector< llvm::StoreInst * > _retStores
Definition: data_entries.h:43
ReturnEntry(llvm::ReturnInst *r)
Definition: data_entries.cpp:23
const std::vector< llvm::StoreInst * > & retStores() const
Definition: data_entries.cpp:106
std::vector< llvm::Value * > _retValues
Definition: data_entries.h:44
llvm::ReturnInst * getRetInstruction() const
Definition: data_entries.cpp:101
void addRetStore(llvm::StoreInst *st)
Definition: data_entries.cpp:28
llvm::ReturnInst * _retInst
Definition: data_entries.h:41
void setRetValues(std::vector< llvm::Value * > &&values)
Definition: data_entries.cpp:67
void setRetStores(std::vector< llvm::StoreInst * > &&stores)
Definition: data_entries.cpp:41
eCC
Definition: calling_convention.h:24
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19