summaryrefslogtreecommitdiff
path: root/src/core/loader/linker.cpp
diff options
context:
space:
mode:
authorGravatar MerryMage2018-01-16 18:05:21 +0000
committerGravatar MerryMage2018-01-16 18:05:21 +0000
commite35644c00533c797888a23420aae90b07e0da184 (patch)
tree4b5464207a2bf8355cd7b2b732fc3c30d3524d24 /src/core/loader/linker.cpp
parenttravis: Use more recent cmake on macOS (diff)
downloadyuzu-e35644c00533c797888a23420aae90b07e0da184.tar.gz
yuzu-e35644c00533c797888a23420aae90b07e0da184.tar.xz
yuzu-e35644c00533c797888a23420aae90b07e0da184.zip
clang-format
Diffstat (limited to 'src/core/loader/linker.cpp')
-rw-r--r--src/core/loader/linker.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/core/loader/linker.cpp b/src/core/loader/linker.cpp
index f82c6f4b4..87cc65e91 100644
--- a/src/core/loader/linker.cpp
+++ b/src/core/loader/linker.cpp
@@ -48,9 +48,9 @@ struct Elf64_Sym {
48}; 48};
49static_assert(sizeof(Elf64_Sym) == 0x18, "Elf64_Sym has incorrect size."); 49static_assert(sizeof(Elf64_Sym) == 0x18, "Elf64_Sym has incorrect size.");
50 50
51void Linker::WriteRelocations(std::vector<u8>& program_image, 51void Linker::WriteRelocations(std::vector<u8>& program_image, const std::vector<Symbol>& symbols,
52 const std::vector<Symbol>& symbols, u64 relocation_offset, 52 u64 relocation_offset, u64 size, bool is_jump_relocation,
53 u64 size, bool is_jump_relocation, VAddr load_base) { 53 VAddr load_base) {
54 for (u64 i = 0; i < size; i += sizeof(Elf64_Rela)) { 54 for (u64 i = 0; i < size; i += sizeof(Elf64_Rela)) {
55 Elf64_Rela rela; 55 Elf64_Rela rela;
56 std::memcpy(&rela, &program_image[relocation_offset + i], sizeof(Elf64_Rela)); 56 std::memcpy(&rela, &program_image[relocation_offset + i], sizeof(Elf64_Rela));
@@ -90,8 +90,7 @@ void Linker::WriteRelocations(std::vector<u8>& program_image,
90 } 90 }
91} 91}
92 92
93void Linker::Relocate(std::vector<u8>& program_image, u32 dynamic_section_offset, 93void Linker::Relocate(std::vector<u8>& program_image, u32 dynamic_section_offset, VAddr load_base) {
94 VAddr load_base) {
95 std::map<u64, u64> dynamic; 94 std::map<u64, u64> dynamic;
96 while (dynamic_section_offset < program_image.size()) { 95 while (dynamic_section_offset < program_image.size()) {
97 Elf64_Dyn dyn; 96 Elf64_Dyn dyn;
@@ -141,8 +140,7 @@ void Linker::ResolveImports() {
141 const auto& search = exports.find(import.first); 140 const auto& search = exports.find(import.first);
142 if (search != exports.end()) { 141 if (search != exports.end()) {
143 Memory::Write64(import.second.ea, search->second + import.second.addend); 142 Memory::Write64(import.second.ea, search->second + import.second.addend);
144 } 143 } else {
145 else {
146 LOG_ERROR(Loader, "Unresolved import: %s", import.first.c_str()); 144 LOG_ERROR(Loader, "Unresolved import: %s", import.first.c_str());
147 } 145 }
148 } 146 }