aboutsummaryrefslogtreecommitdiff
path: root/backends/plugins/elf-loader.h
diff options
context:
space:
mode:
Diffstat (limited to 'backends/plugins/elf-loader.h')
-rw-r--r--backends/plugins/elf-loader.h28
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 */