From 592b0484b9c1e943093dd93b720428ebfaa116d2 Mon Sep 17 00:00:00 2001 From: aerosoul94 Date: Sun, 9 Apr 2017 00:35:32 -0500 Subject: Add Wii U RPX/RPL loader src. Some bug fixes. --- src/wiiu/cafe_loader.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/wiiu/cafe_loader.h (limited to 'src/wiiu/cafe_loader.h') diff --git a/src/wiiu/cafe_loader.h b/src/wiiu/cafe_loader.h new file mode 100644 index 0000000..5417690 --- /dev/null +++ b/src/wiiu/cafe_loader.h @@ -0,0 +1,45 @@ +#pragma once + +#include "elf_reader.h" +#include "cafe.h" + +class cafe_loader { + elf_reader *m_elf; + uint32 m_relocAddr; + + uint32 m_externStart; + uint32 m_externEnd; + + struct import { + uint32 addr; + uint32 orig; + const char *name; + }; + + std::vector m_imports; + +public: + cafe_loader(elf_reader *elf); + + void apply(); + +private: + void applySegments(); + void applySegment(uint32 sel, + const char *data, + uint32 addr, + uint32 size, + const char *name, + const char *sclass, + uchar perm, + uchar align, + bool load); + + void applyRelocations(); + + void processImports(); + void processExports(); + + void swapSymbols(); + void applySymbols(); +}; \ No newline at end of file -- cgit v1.3.1