summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2019-05-18 03:41:33 +0200
committerZach Hilman <zachhilman@gmail.com>2019-05-25 22:06:53 +0200
commit2179ad7483bde3c210bf4f638ae8801b3ba11214 (patch)
tree27a139c66bb7917c6c2eb7075ecfb615425054f3
parentMerge pull request #2513 from lioncash/string (diff)
downloadyuzu-2179ad7483bde3c210bf4f638ae8801b3ba11214.tar
yuzu-2179ad7483bde3c210bf4f638ae8801b3ba11214.tar.gz
yuzu-2179ad7483bde3c210bf4f638ae8801b3ba11214.tar.bz2
yuzu-2179ad7483bde3c210bf4f638ae8801b3ba11214.tar.lz
yuzu-2179ad7483bde3c210bf4f638ae8801b3ba11214.tar.xz
yuzu-2179ad7483bde3c210bf4f638ae8801b3ba11214.tar.zst
yuzu-2179ad7483bde3c210bf4f638ae8801b3ba11214.zip
-rw-r--r--src/core/core.cpp10
-rw-r--r--src/core/core.h5
-rw-r--r--src/core/loader/nso.cpp3
3 files changed, 18 insertions, 0 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 7106151bd..96ba6a569 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -270,6 +270,8 @@ struct System::Impl {
/// Telemetry session for this emulation session
std::unique_ptr<Core::TelemetrySession> telemetry_session;
+ std::map<VAddr, std::string, std::greater<>> modules;
+
ResultStatus status = ResultStatus::Success;
std::string status_details = "";
@@ -509,6 +511,14 @@ void System::ClearContentProvider(FileSys::ContentProviderUnionSlot slot) {
impl->content_provider->ClearSlot(slot);
}
+void System::RegisterNSOModule(std::string name, VAddr start_address) {
+ impl->modules.insert_or_assign(start_address, name);
+}
+
+const std::map<VAddr, std::string, std::greater<>>& System::GetRegisteredNSOModules() const {
+ return impl->modules;
+}
+
System::ResultStatus System::Init(Frontend::EmuWindow& emu_window) {
return impl->Init(*this, emu_window);
}
diff --git a/src/core/core.h b/src/core/core.h
index a9a756a4c..10542ba21 100644
--- a/src/core/core.h
+++ b/src/core/core.h
@@ -8,6 +8,7 @@
#include <memory>
#include <string>
+#include <map>
#include "common/common_types.h"
#include "core/file_sys/vfs_types.h"
#include "core/hle/kernel/object.h"
@@ -285,6 +286,10 @@ public:
void ClearContentProvider(FileSys::ContentProviderUnionSlot slot);
+ void RegisterNSOModule(std::string name, VAddr start_address);
+
+ const std::map<VAddr, std::string, std::greater<>>& GetRegisteredNSOModules() const;
+
private:
System();
diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp
index 8592b1f44..7beeaaff3 100644
--- a/src/core/loader/nso.cpp
+++ b/src/core/loader/nso.cpp
@@ -164,6 +164,9 @@ std::optional<VAddr> AppLoader_NSO::LoadModule(Kernel::Process& process,
// Register module with GDBStub
GDBStub::RegisterModule(file.GetName(), load_base, load_base);
+ // Register module for ARMInterface with System
+ Core::System::GetInstance().RegisterNSOModule(file.GetName(), load_base);
+
return load_base + image_size;
}