aboutsummaryrefslogtreecommitdiff
path: root/backends/plugins/elf/elf-loader.h
diff options
context:
space:
mode:
Diffstat (limited to 'backends/plugins/elf/elf-loader.h')
-rw-r--r--backends/plugins/elf/elf-loader.h22
1 files changed, 12 insertions, 10 deletions
diff --git a/backends/plugins/elf/elf-loader.h b/backends/plugins/elf/elf-loader.h
index 9b80a0236f..ae226fc2b6 100644
--- a/backends/plugins/elf/elf-loader.h
+++ b/backends/plugins/elf/elf-loader.h
@@ -44,6 +44,8 @@
*/
class DLObject {
protected:
+ Common::SeekableReadStream* _file;
+
byte *_segment;
Elf32_Sym *_symtab;
char *_strtab;
@@ -57,19 +59,19 @@ protected:
void *_dtors_start, *_dtors_end;
virtual void unload();
- bool load(Common::SeekableReadStream* DLFile);
-
- bool readElfHeader(Common::SeekableReadStream* DLFile, Elf32_Ehdr *ehdr);
- bool readProgramHeaders(Common::SeekableReadStream* DLFile, Elf32_Ehdr *ehdr, Elf32_Phdr *phdr, Elf32_Half num);
- virtual bool loadSegment(Common::SeekableReadStream* DLFile, Elf32_Phdr *phdr);
- Elf32_Shdr *loadSectionHeaders(Common::SeekableReadStream* DLFile, Elf32_Ehdr *ehdr);
- int loadSymbolTable(Common::SeekableReadStream* DLFile, Elf32_Ehdr *ehdr, Elf32_Shdr *shdr);
- bool loadStringTable(Common::SeekableReadStream* DLFile, Elf32_Shdr *shdr);
+ bool load();
+
+ bool readElfHeader(Elf32_Ehdr *ehdr);
+ bool readProgramHeaders(Elf32_Ehdr *ehdr, Elf32_Phdr *phdr, Elf32_Half num);
+ virtual bool loadSegment(Elf32_Phdr *phdr);
+ Elf32_Shdr *loadSectionHeaders(Elf32_Ehdr *ehdr);
+ int loadSymbolTable(Elf32_Ehdr *ehdr, Elf32_Shdr *shdr);
+ bool loadStringTable(Elf32_Shdr *shdr);
virtual void relocateSymbols(ptrdiff_t offset);
// architecture specific
- virtual bool relocate(Common::SeekableReadStream* DLFile, Elf32_Off offset, Elf32_Word size, byte *relSegment) = 0;
- virtual bool relocateRels(Common::SeekableReadStream* DLFile, Elf32_Ehdr *ehdr, Elf32_Shdr *shdr) = 0;
+ virtual bool relocate(Elf32_Off offset, Elf32_Word size, byte *relSegment) = 0;
+ virtual bool relocateRels(Elf32_Ehdr *ehdr, Elf32_Shdr *shdr) = 0;
// platform specific
virtual void *allocSegment(size_t boundary, size_t size) const = 0;