retdec
|
A base class for all descriptions of function semantics. More...
#include <semantics.h>
Public Member Functions | |
virtual | ~Semantics ()=default |
virtual std::string | getId () const =0 |
Returns the ID of the semantics. More... | |
virtual std::optional< std::string > | getMainFuncName () const =0 |
Returns the name of the main function. More... | |
virtual std::optional< std::string > | getCHeaderFileForFunc (const std::string &funcName) const =0 |
Returns the C header file for the given function. More... | |
virtual std::optional< bool > | funcNeverReturns (const std::string &funcName) const =0 |
Gets the information whether the given function never returns. More... | |
virtual std::optional< std::string > | getNameOfVarStoringResult (const std::string &funcName) const =0 |
Returns an appropriate name of the variable that stores the result of calls to the given function. More... | |
virtual std::optional< std::string > | getNameOfParam (const std::string &funcName, unsigned paramPos) const =0 |
Returns an appropriate name of the given function's parameter. More... | |
virtual std::optional< IntStringMap > | getSymbolicNamesForParam (const std::string &funcName, unsigned paramPos) const =0 |
Returns a mapping of integers into their symbolic names for the given parameter of the given function. More... | |
Protected Member Functions | |
Semantics ()=default | |
Additional Inherited Members | |
![]() | |
NonCopyable (const NonCopyable &)=delete | |
NonCopyable & | operator= (const NonCopyable &)=delete |
NonCopyable ()=default | |
~NonCopyable ()=default | |
A base class for all descriptions of function semantics.
This class should be used as a base class for all semantics.
To implement a new semantics, you should:
Instances of this class have reference object semantics.
|
virtualdefault |
|
protecteddefault |
|
pure virtual |
Gets the information whether the given function never returns.
true
if the given function never returns, false
if the function may return, and std::nullopt
otherwise.[in] | funcName | Name of the function. |
For example, semantics describing the standard C library may return true
for "exit"
.
Implemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, retdec::llvmir2hll::DefaultSemantics, and retdec::llvmir2hll::CompoundSemantics.
|
pure virtual |
Returns the C header file for the given function.
"file"
if the header file is known, std::nullopt
otherwise.[in] | funcName | Name of the function. |
For example, semantics describing the standard C library may return "stdio.h"
for "printf"
.
Implemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, retdec::llvmir2hll::GCCGeneralSemantics, retdec::llvmir2hll::DefaultSemantics, and retdec::llvmir2hll::CompoundSemantics.
|
pure virtual |
Returns the ID of the semantics.
Implemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, retdec::llvmir2hll::GCCGeneralSemantics, retdec::llvmir2hll::DefaultSemantics, and retdec::llvmir2hll::CompoundSemantics.
|
pure virtual |
Returns the name of the main function.
Implemented in retdec::llvmir2hll::LibcSemantics, retdec::llvmir2hll::DefaultSemantics, and retdec::llvmir2hll::CompoundSemantics.
|
pure virtual |
Returns an appropriate name of the given function's parameter.
"name"
if the name is known, std::nullopt
otherwise.[in] | funcName | Name of the function. |
[in] | paramPos | Position of the parameter. |
For example, semantics describing the standard C library may return "file_path"
for the first parameter of "fopen"
.
Implemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, retdec::llvmir2hll::GCCGeneralSemantics, retdec::llvmir2hll::DefaultSemantics, and retdec::llvmir2hll::CompoundSemantics.
|
pure virtual |
Returns an appropriate name of the variable that stores the result of calls to the given function.
"name"
if the name is known, std::nullopt
otherwise.[in] | funcName | Name of the function. |
For example, semantics describing the standard C library may return "c"
for "getchar"
.
Implemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, retdec::llvmir2hll::GCCGeneralSemantics, retdec::llvmir2hll::DefaultSemantics, and retdec::llvmir2hll::CompoundSemantics.
|
pure virtual |
Returns a mapping of integers into their symbolic names for the given parameter of the given function.
map
if the mapping is known, std::nullopt
otherwise.[in] | funcName | Name of the function. |
[in] | paramPos | Position of the parameter. |
For example, a semantics may return
for "flock"
and 2
.
Implemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, retdec::llvmir2hll::GCCGeneralSemantics, retdec::llvmir2hll::DefaultSemantics, and retdec::llvmir2hll::CompoundSemantics.