diff --git a/core/relinker/relinker/include/relinker/guest/GuestImage.hpp b/core/relinker/relinker/include/relinker/guest/GuestImage.hpp index a71a33289..71cca90fa 100644 --- a/core/relinker/relinker/include/relinker/guest/GuestImage.hpp +++ b/core/relinker/relinker/include/relinker/guest/GuestImage.hpp @@ -7,6 +7,8 @@ namespace Relinker { +inline constexpr char GuestModuleSuffix[] = ".guest.prx"; + struct GuestSymbol { std::string Name; std::uint8_t Info; diff --git a/core/relinker/relinker/src/guest/GuestImageReader.cpp b/core/relinker/relinker/src/guest/GuestImageReader.cpp index 5b3a8abc8..d0e2afb41 100644 --- a/core/relinker/relinker/src/guest/GuestImageReader.cpp +++ b/core/relinker/relinker/src/guest/GuestImageReader.cpp @@ -27,7 +27,7 @@ GuestImage GuestImageReader::Read(const std::filesystem::path& path, std::vector range(Io::ReadU64(bytes, 32), static_cast(Io::ReadU16(bytes, 56)) * 56); GuestImage image; image.SourcePath = path; - image.OutputName = path.filename().string() + ".guest.prx"; + image.OutputName = path.filename().string() + GuestModuleSuffix; image.Headers = ElfReader(bytes).ReadProgramHeaders(); const Domain::ProgramHeader* dynamic = nullptr; const Domain::ProgramHeader* dynlib = nullptr; diff --git a/core/relinker/relinker/src/guest/GuestModuleBuilder.cpp b/core/relinker/relinker/src/guest/GuestModuleBuilder.cpp index c461ffb3c..f8fd3e803 100644 --- a/core/relinker/relinker/src/guest/GuestModuleBuilder.cpp +++ b/core/relinker/relinker/src/guest/GuestModuleBuilder.cpp @@ -26,6 +26,7 @@ std::vector GuestModuleBuilder::Build(const std::filesystem::path if (!std::filesystem::is_directory(directory)) throw Domain::RelinkerException("Guest module path is not a directory: " + directory.string()); std::vector paths; for (const auto& entry : std::filesystem::directory_iterator(directory)) { + if (entry.path().filename().string().ends_with(GuestModuleSuffix)) continue; if (!entry.is_regular_file()) continue; std::ifstream stream(entry.path(), std::ios::binary); if (!stream) throw Domain::RelinkerException("Cannot read guest candidate: " + entry.path().string());