diff options
-rw-r--r-- | src/core/core.cpp | 10 | ||||
-rw-r--r-- | src/core/core.h | 5 | ||||
-rw-r--r-- | src/core/loader/nso.cpp | 3 |
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; } |