Files
Michael Fabian 'Xaymar' Dirks cc1340190e linker: Formatting
2019-01-18 17:03:57 +01:00

36 lines
881 B
C++

#ifndef LINKER_H
#define LINKER_H
class Module {
public:
virtual ~Module() {}
virtual void* link(Module* libs) = 0;
virtual bool createExe(const char* exe_file, const char* dll_file) = 0;
virtual int getPC() = 0;
virtual void emit(int byte) = 0;
virtual void emitw(int word) = 0;
virtual void emitd(int dword) = 0;
virtual void emitx(void* data, int sz) = 0;
virtual bool addSymbol(const char* sym, int pc) = 0;
virtual bool addReloc(const char* dest_sym, int pc, bool pcrel) = 0;
virtual bool findSymbol(const char* sym, int* pc) = 0;
};
class Linker {
public:
virtual int version();
virtual bool canCreateExe();
virtual Module* createModule();
virtual void deleteModule(Module* mod);
};
extern "C" _declspec(dllexport) Linker* _cdecl linkerGetLinker();
#endif