From 0e33636aaf9c5e3a09c617ec9088d734e0c88108 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 25 Feb 2015 13:28:43 +0300 Subject: [PATCH] Import fix --- rpcs3/Loader/ELF64.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/rpcs3/Loader/ELF64.cpp b/rpcs3/Loader/ELF64.cpp index 3e3942b62b..9f9ddcd263 100644 --- a/rpcs3/Loader/ELF64.cpp +++ b/rpcs3/Loader/ELF64.cpp @@ -274,8 +274,26 @@ namespace loader } } + assert(e.second != stub); e.second = stub; } + + for (auto &i : m.second.imports) + { + u32 stub = i.second; + + for (auto &s : info.segments) + { + if (stub >= s.initial_addr.addr() && stub < s.initial_addr.addr() + s.size_file) + { + stub += s.begin.addr() - s.initial_addr.addr(); + break; + } + } + + assert(i.second != stub); + i.second = stub; + } } return ok; @@ -432,7 +450,7 @@ namespace loader for (auto& f : m.second.imports) { const u32 nid = f.first; - const u32 addr = f.second + info.segments[0].begin.addr(); + const u32 addr = f.second; u32 index;