diff options
Diffstat (limited to 'backends/plugins/elf-loader.h')
-rw-r--r-- | backends/plugins/elf-loader.h | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/backends/plugins/elf-loader.h b/backends/plugins/elf-loader.h index e8c5701f6e..1bbcbc4b78 100644 --- a/backends/plugins/elf-loader.h +++ b/backends/plugins/elf-loader.h @@ -23,11 +23,16 @@ * */ -#ifndef LOADER_H -#define LOADER_H +#ifndef ELF_LOADER_H +#define ELF_LOADER_H -#include "backends/plugins/elf32.h" -#include "common/list.h" +#include "elf32.h" +#include "common/stream.h" + +#if defined(__PLAYSTATION2__) || defined(__PSP__) +#define MIPS_TARGET +#include "shorts-segment-manager.h" +#endif #define MAXDLERRLEN 80 @@ -43,6 +48,11 @@ protected: int _segmentSize; +#ifdef MIPS_TARGET + ShortSegmentManager::Segment *_shortsSegment; // For assigning shorts ranges + unsigned int _gpVal; // Value of Global Pointer +#endif + void seterror(const char *fmt, ...); void unload(); bool relocate(Common::SeekableReadStream* DLFile, unsigned long offset, unsigned long size, void *relSegment); @@ -65,7 +75,13 @@ public: DLObject(char *errbuf = NULL) : _errbuf(_errbuf), _segment(NULL), _symtab(NULL), _strtab(NULL), _symbol_cnt(0), _symtab_sect(-1), _dtors_start(NULL), _dtors_end(NULL), - _segmentSize(0) {} + _segmentSize(0) { +#ifdef MIPS_TARGET + _shortsSegment = NULL; + _gpVal = 0; +#endif + } + }; #define RTLD_LAZY 0 @@ -78,8 +94,6 @@ extern "C" { void dlforgetsyms(void *handle); } -//The following need to be defined by specific ports. extern void flushDataCache(); -extern bool dlRelocate(Common::SeekableReadStream* DLFile, unsigned long offset, unsigned long size, void *relSegment); #endif /* LOADER_H */ |