From dd1a70b70cc5a4ab3a7dbeef2862d4a817fd91a7 Mon Sep 17 00:00:00 2001 From: pixel Date: Mon, 26 Jan 2004 15:31:54 +0000 Subject: Blah --- includes/mipsobj.h | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 includes/mipsobj.h (limited to 'includes/mipsobj.h') diff --git a/includes/mipsobj.h b/includes/mipsobj.h new file mode 100644 index 0000000..18ac504 --- /dev/null +++ b/includes/mipsobj.h @@ -0,0 +1,74 @@ +#ifndef __MIPSOBJ_H__ +#define __MIPSOBJ_H__ + +#include +#include +#include + +enum mips_reloc_t { + R_MIPS_26, + R_MIPS_32, + R_MIPS_HI16, + R_MIPS_LO16, +}; + +enum symbol_type_t { + LOCAL, + GLOBAL, + EXTERN, +}; + +enum section_type_t { + TEXT, + DATA, + BSS, +}; + +struct reloc_t { + String symbol; + int type; + Uint32 offset; +}; + +struct symbol_t { + String name; + String section; + int type; + Uint32 offset; +}; + +class section : public Base { + public: + section(const String &, int); + section(); + virtual ~section(); + void setname(const String &); + void settype(int); + void putdatas(const Uint8 *, int); + int gettype(); + int getsize(); + const Uint8 * getdatas(); + void putreloc(const String &, int, Uint32); + void putreloc(const struct reloc_t &); + std::vector relocs; + private: + String name; + int type; + Uint8 * datas; + int length; +}; + +class mipsobj : public Base { + public: + mipsobj(); + virtual ~mipsobj(); + std::map sections; + std::map symbols; + void loadELF(Handle *) throw (GeneralException); + void loadOBJ(Handle *) throw (GeneralException); + void loadLIB(Handle *, const String &) throw (GeneralException); + private: + bool loaded; +}; + +#endif -- cgit v1.2.3