diff --git a/include/inc-elfdep/elfdep.hpp b/include/inc-elfdep/elfdep.hpp new file mode 100644 index 0000000000000000000000000000000000000000..fc81f0d279ab7a89e233104bdce637c6206ccbe4 --- /dev/null +++ b/include/inc-elfdep/elfdep.hpp @@ -0,0 +1,35 @@ + +#include <irdb-core> +#include <irdb-transform> +#include <string> +#include <memory> + + +namespace IRDB_SDK +{ + +using namespace std; + +class ElfDependencies_t +{ + protected: + ElfDependencies_t() { } + ElfDependencies_t(const ElfDependencies_t& copy) = delete; + public: + virtual ~ElfDependencies_t() { } + + virtual void prependLibraryDepedencies(const string& libName) = 0; + virtual void appendLibraryDepedencies(const string& libName) = 0; + + // return scoop and offset + virtual pair<IRDB_SDK::DataScoop_t*,int> appendGotEntry(const string &symbolName) = 0 ; + + // return instruction that's the plt entry. + virtual Instruction_t* appendPltEntry(const string &symbolName) = 0 ; + + static unique_ptr<ElfDependencies_t> factory(IRDB_SDK::FileIR_t* firp); + +}; + + +} diff --git a/include/inc-transform/transform.hpp b/include/inc-transform/transform.hpp index c03d815bb3ba0eed0310f6659ada1ea2e2eeed84..1e0b8d8f21d0f31cc300cd093d00ac4edee39a44 100644 --- a/include/inc-transform/transform.hpp +++ b/include/inc-transform/transform.hpp @@ -32,7 +32,7 @@ namespace IRDB_SDK void setInstructionAssembly(Instruction_t* instr, const string& p_asm); - virtual FileIR_t* getFileIR(); + FileIR_t* getFileIR(); private: diff --git a/include/irdb-elfdep b/include/irdb-elfdep new file mode 100644 index 0000000000000000000000000000000000000000..25024599140d628c591c7e1b6beccb1c4b64d7f3 --- /dev/null +++ b/include/irdb-elfdep @@ -0,0 +1,7 @@ + +#ifndef IRDB_SDK_elfdep +#define IRDB_SDK_elfdep + +#include <inc-elfdep/elfdep.hpp> + +#endif