ScummVM API documentation
mips-loader.h
1
2/* ScummVM - Graphic Adventure Engine
3 *
4 * ScummVM is the legal property of its developers, whose names
5 * are too numerous to list here. Please refer to the COPYRIGHT
6 * file distributed with this source distribution.
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
23#ifndef BACKENDS_PLUGINS_MIPS_LOADER_H
24#define BACKENDS_PLUGINS_MIPS_LOADER_H
25
26#include "common/scummsys.h"
27
28#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET)
29
30#include "backends/plugins/elf/elf-loader.h"
31#include "backends/plugins/elf/shorts-segment-manager.h"
32
33class MIPSDLObject : public DLObject {
34protected:
35 ShortSegmentManager::Segment *_shortsSegment; // For assigning shorts ranges
36 uint32 _gpVal; // Value of Global Pointer
37
38 virtual bool relocate(Elf32_Off offset, Elf32_Word size, byte *relSegment);
39 virtual bool relocateRels(Elf32_Ehdr *ehdr, Elf32_Shdr *shdr);
40 virtual void relocateSymbols(ptrdiff_t offset);
41 virtual bool loadSegment(Elf32_Phdr *phdr);
42 virtual void unload();
43
44 void freeShortsSegment();
45
46public:
47 MIPSDLObject() :
48 DLObject() {
49 _shortsSegment = NULL;
50 _gpVal = 0;
51 }
52 ~MIPSDLObject() {
53 freeShortsSegment();
54 }
55};
56
57#endif /* defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET) */
58
59#endif /* BACKENDS_PLUGINS_MIPS_LOADER_H */
Definition: dcloader.h:29