diff options
| author | 2023-09-16 11:40:17 -0400 | |
|---|---|---|
| committer | 2023-09-16 11:40:17 -0400 | |
| commit | 62d473305df295a3b8e955e6a2a05a1105ef893d (patch) | |
| tree | 114ea862538652c81c14c282b81a29816fe5c2d1 /src/core/loader | |
| parent | Merge pull request #11499 from Squall-Leonhart/bitlockerfix (diff) | |
| parent | core: improve debug workflow (diff) | |
| download | yuzu-62d473305df295a3b8e955e6a2a05a1105ef893d.tar.gz yuzu-62d473305df295a3b8e955e6a2a05a1105ef893d.tar.xz yuzu-62d473305df295a3b8e955e6a2a05a1105ef893d.zip | |
Merge pull request #11500 from liamwhite/debug-stuff
core: improve debug workflow
Diffstat (limited to 'src/core/loader')
| -rw-r--r-- | src/core/loader/deconstructed_rom_directory.cpp | 8 | ||||
| -rw-r--r-- | src/core/loader/deconstructed_rom_directory.h | 4 | ||||
| -rw-r--r-- | src/core/loader/kip.cpp | 3 | ||||
| -rw-r--r-- | src/core/loader/nro.cpp | 3 | ||||
| -rw-r--r-- | src/core/loader/nso.cpp | 5 | ||||
| -rw-r--r-- | src/core/loader/nsp.cpp | 3 |
6 files changed, 16 insertions, 10 deletions
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp index f4eaf3331..5a42dea48 100644 --- a/src/core/loader/deconstructed_rom_directory.cpp +++ b/src/core/loader/deconstructed_rom_directory.cpp | |||
| @@ -18,7 +18,7 @@ namespace Loader { | |||
| 18 | 18 | ||
| 19 | AppLoader_DeconstructedRomDirectory::AppLoader_DeconstructedRomDirectory(FileSys::VirtualFile file_, | 19 | AppLoader_DeconstructedRomDirectory::AppLoader_DeconstructedRomDirectory(FileSys::VirtualFile file_, |
| 20 | bool override_update_) | 20 | bool override_update_) |
| 21 | : AppLoader(std::move(file_)), override_update(override_update_) { | 21 | : AppLoader(std::move(file_)), override_update(override_update_), is_hbl(false) { |
| 22 | const auto file_dir = file->GetContainingDirectory(); | 22 | const auto file_dir = file->GetContainingDirectory(); |
| 23 | 23 | ||
| 24 | // Title ID | 24 | // Title ID |
| @@ -69,9 +69,9 @@ AppLoader_DeconstructedRomDirectory::AppLoader_DeconstructedRomDirectory(FileSys | |||
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | AppLoader_DeconstructedRomDirectory::AppLoader_DeconstructedRomDirectory( | 71 | AppLoader_DeconstructedRomDirectory::AppLoader_DeconstructedRomDirectory( |
| 72 | FileSys::VirtualDir directory, bool override_update_) | 72 | FileSys::VirtualDir directory, bool override_update_, bool is_hbl_) |
| 73 | : AppLoader(directory->GetFile("main")), dir(std::move(directory)), | 73 | : AppLoader(directory->GetFile("main")), dir(std::move(directory)), |
| 74 | override_update(override_update_) {} | 74 | override_update(override_update_), is_hbl(is_hbl_) {} |
| 75 | 75 | ||
| 76 | FileType AppLoader_DeconstructedRomDirectory::IdentifyType(const FileSys::VirtualFile& dir_file) { | 76 | FileType AppLoader_DeconstructedRomDirectory::IdentifyType(const FileSys::VirtualFile& dir_file) { |
| 77 | if (FileSys::IsDirectoryExeFS(dir_file->GetContainingDirectory())) { | 77 | if (FileSys::IsDirectoryExeFS(dir_file->GetContainingDirectory())) { |
| @@ -147,7 +147,7 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect | |||
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | // Setup the process code layout | 149 | // Setup the process code layout |
| 150 | if (process.LoadFromMetadata(metadata, code_size).IsError()) { | 150 | if (process.LoadFromMetadata(metadata, code_size, is_hbl).IsError()) { |
| 151 | return {ResultStatus::ErrorUnableToParseKernelMetadata, {}}; | 151 | return {ResultStatus::ErrorUnableToParseKernelMetadata, {}}; |
| 152 | } | 152 | } |
| 153 | 153 | ||
diff --git a/src/core/loader/deconstructed_rom_directory.h b/src/core/loader/deconstructed_rom_directory.h index f7702225e..1e9f765c9 100644 --- a/src/core/loader/deconstructed_rom_directory.h +++ b/src/core/loader/deconstructed_rom_directory.h | |||
| @@ -27,7 +27,8 @@ public: | |||
| 27 | 27 | ||
| 28 | // Overload to accept exefs directory. Must contain 'main' and 'main.npdm' | 28 | // Overload to accept exefs directory. Must contain 'main' and 'main.npdm' |
| 29 | explicit AppLoader_DeconstructedRomDirectory(FileSys::VirtualDir directory, | 29 | explicit AppLoader_DeconstructedRomDirectory(FileSys::VirtualDir directory, |
| 30 | bool override_update_ = false); | 30 | bool override_update_ = false, |
| 31 | bool is_hbl_ = false); | ||
| 31 | 32 | ||
| 32 | /** | 33 | /** |
| 33 | * Identifies whether or not the given file is a deconstructed ROM directory. | 34 | * Identifies whether or not the given file is a deconstructed ROM directory. |
| @@ -62,6 +63,7 @@ private: | |||
| 62 | std::string name; | 63 | std::string name; |
| 63 | u64 title_id{}; | 64 | u64 title_id{}; |
| 64 | bool override_update; | 65 | bool override_update; |
| 66 | bool is_hbl; | ||
| 65 | 67 | ||
| 66 | Modules modules; | 68 | Modules modules; |
| 67 | }; | 69 | }; |
diff --git a/src/core/loader/kip.cpp b/src/core/loader/kip.cpp index d722459c6..bf56a08b4 100644 --- a/src/core/loader/kip.cpp +++ b/src/core/loader/kip.cpp | |||
| @@ -90,7 +90,8 @@ AppLoader::LoadResult AppLoader_KIP::Load(Kernel::KProcess& process, | |||
| 90 | codeset.DataSegment().size += kip->GetBSSSize(); | 90 | codeset.DataSegment().size += kip->GetBSSSize(); |
| 91 | 91 | ||
| 92 | // Setup the process code layout | 92 | // Setup the process code layout |
| 93 | if (process.LoadFromMetadata(FileSys::ProgramMetadata::GetDefault(), program_image.size()) | 93 | if (process |
| 94 | .LoadFromMetadata(FileSys::ProgramMetadata::GetDefault(), program_image.size(), false) | ||
| 94 | .IsError()) { | 95 | .IsError()) { |
| 95 | return {ResultStatus::ErrorNotInitialized, {}}; | 96 | return {ResultStatus::ErrorNotInitialized, {}}; |
| 96 | } | 97 | } |
diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp index d7562b4bc..69f1a54ed 100644 --- a/src/core/loader/nro.cpp +++ b/src/core/loader/nro.cpp | |||
| @@ -196,7 +196,8 @@ static bool LoadNroImpl(Kernel::KProcess& process, const std::vector<u8>& data) | |||
| 196 | program_image.resize(static_cast<u32>(program_image.size()) + bss_size); | 196 | program_image.resize(static_cast<u32>(program_image.size()) + bss_size); |
| 197 | 197 | ||
| 198 | // Setup the process code layout | 198 | // Setup the process code layout |
| 199 | if (process.LoadFromMetadata(FileSys::ProgramMetadata::GetDefault(), program_image.size()) | 199 | if (process |
| 200 | .LoadFromMetadata(FileSys::ProgramMetadata::GetDefault(), program_image.size(), false) | ||
| 200 | .IsError()) { | 201 | .IsError()) { |
| 201 | return false; | 202 | return false; |
| 202 | } | 203 | } |
diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp index 549822506..1350da8dc 100644 --- a/src/core/loader/nso.cpp +++ b/src/core/loader/nso.cpp | |||
| @@ -127,13 +127,14 @@ std::optional<VAddr> AppLoader_NSO::LoadModule(Kernel::KProcess& process, Core:: | |||
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | // Apply patches if necessary | 129 | // Apply patches if necessary |
| 130 | if (pm && (pm->HasNSOPatch(nso_header.build_id) || Settings::values.dump_nso)) { | 130 | const auto name = nso_file.GetName(); |
| 131 | if (pm && (pm->HasNSOPatch(nso_header.build_id, name) || Settings::values.dump_nso)) { | ||
| 131 | std::vector<u8> pi_header(sizeof(NSOHeader) + program_image.size()); | 132 | std::vector<u8> pi_header(sizeof(NSOHeader) + program_image.size()); |
| 132 | std::memcpy(pi_header.data(), &nso_header, sizeof(NSOHeader)); | 133 | std::memcpy(pi_header.data(), &nso_header, sizeof(NSOHeader)); |
| 133 | std::memcpy(pi_header.data() + sizeof(NSOHeader), program_image.data(), | 134 | std::memcpy(pi_header.data() + sizeof(NSOHeader), program_image.data(), |
| 134 | program_image.size()); | 135 | program_image.size()); |
| 135 | 136 | ||
| 136 | pi_header = pm->PatchNSO(pi_header, nso_file.GetName()); | 137 | pi_header = pm->PatchNSO(pi_header, name); |
| 137 | 138 | ||
| 138 | std::copy(pi_header.begin() + sizeof(NSOHeader), pi_header.end(), program_image.data()); | 139 | std::copy(pi_header.begin() + sizeof(NSOHeader), pi_header.end(), program_image.data()); |
| 139 | } | 140 | } |
diff --git a/src/core/loader/nsp.cpp b/src/core/loader/nsp.cpp index fe2af1ae6..f4ab75b77 100644 --- a/src/core/loader/nsp.cpp +++ b/src/core/loader/nsp.cpp | |||
| @@ -30,7 +30,8 @@ AppLoader_NSP::AppLoader_NSP(FileSys::VirtualFile file_, | |||
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | if (nsp->IsExtractedType()) { | 32 | if (nsp->IsExtractedType()) { |
| 33 | secondary_loader = std::make_unique<AppLoader_DeconstructedRomDirectory>(nsp->GetExeFS()); | 33 | secondary_loader = std::make_unique<AppLoader_DeconstructedRomDirectory>( |
| 34 | nsp->GetExeFS(), false, file->GetName() == "hbl.nsp"); | ||
| 34 | } else { | 35 | } else { |
| 35 | const auto control_nca = | 36 | const auto control_nca = |
| 36 | nsp->GetNCA(nsp->GetProgramTitleID(), FileSys::ContentRecordType::Control); | 37 | nsp->GetNCA(nsp->GetProgramTitleID(), FileSys::ContentRecordType::Control); |