diff options
| author | 2018-01-16 18:05:21 +0000 | |
|---|---|---|
| committer | 2018-01-16 18:05:21 +0000 | |
| commit | e35644c00533c797888a23420aae90b07e0da184 (patch) | |
| tree | 4b5464207a2bf8355cd7b2b732fc3c30d3524d24 /src/core/loader/linker.cpp | |
| parent | travis: Use more recent cmake on macOS (diff) | |
| download | yuzu-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.cpp | 12 |
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 | }; |
| 49 | static_assert(sizeof(Elf64_Sym) == 0x18, "Elf64_Sym has incorrect size."); | 49 | static_assert(sizeof(Elf64_Sym) == 0x18, "Elf64_Sym has incorrect size."); |
| 50 | 50 | ||
| 51 | void Linker::WriteRelocations(std::vector<u8>& program_image, | 51 | void 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 | ||
| 93 | void Linker::Relocate(std::vector<u8>& program_image, u32 dynamic_section_offset, | 93 | void 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 | } |