mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	nso: Remove code specific to directory loading.
This commit is contained in:
		
							parent
							
								
									c8a094e164
								
							
						
					
					
						commit
						2dafd0d287
					
				@ -88,7 +88,7 @@ static constexpr u32 PageAlignSize(u32 size) {
 | 
				
			|||||||
    return (size + Memory::PAGE_MASK) & ~Memory::PAGE_MASK;
 | 
					    return (size + Memory::PAGE_MASK) & ~Memory::PAGE_MASK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VAddr AppLoader_NSO::LoadNso(const std::string& path, VAddr load_base) {
 | 
					VAddr AppLoader_NSO::LoadModule(const std::string& path, VAddr load_base) {
 | 
				
			||||||
    FileUtil::IOFile file(path, "rb");
 | 
					    FileUtil::IOFile file(path, "rb");
 | 
				
			||||||
    if (!file.IsOpen()) {
 | 
					    if (!file.IsOpen()) {
 | 
				
			||||||
        return {};
 | 
					        return {};
 | 
				
			||||||
@ -153,21 +153,9 @@ ResultStatus AppLoader_NSO::Load(Kernel::SharedPtr<Kernel::Process>& process) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    process = Kernel::Process::Create("main");
 | 
					    process = Kernel::Process::Create("main");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Load NSO modules
 | 
					    // Load module
 | 
				
			||||||
    VAddr next_load_addr{Memory::PROCESS_IMAGE_VADDR};
 | 
					    LoadModule(filepath, Memory::PROCESS_IMAGE_VADDR);
 | 
				
			||||||
    for (const auto& module :
 | 
					    LOG_DEBUG(Loader, "loaded module %s @ 0x%llx", filepath.c_str(), Memory::PROCESS_IMAGE_VADDR);
 | 
				
			||||||
         {"rtld", "sdk", "subsdk0", "subsdk1", "subsdk2", "subsdk3", "subsdk4"}) {
 | 
					 | 
				
			||||||
        const std::string path = filepath.substr(0, filepath.find_last_of("/\\")) + "/" + module;
 | 
					 | 
				
			||||||
        const VAddr load_addr = next_load_addr;
 | 
					 | 
				
			||||||
        next_load_addr = LoadNso(path, load_addr);
 | 
					 | 
				
			||||||
        if (next_load_addr) {
 | 
					 | 
				
			||||||
            LOG_DEBUG(Loader, "loaded module %s @ 0x%llx", module, load_addr);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            next_load_addr = load_addr;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    // Load "main" module
 | 
					 | 
				
			||||||
    LoadNso(filepath, next_load_addr);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    process->svc_access_mask.set();
 | 
					    process->svc_access_mask.set();
 | 
				
			||||||
    process->address_mappings = default_address_mappings;
 | 
					    process->address_mappings = default_address_mappings;
 | 
				
			||||||
 | 
				
			|||||||
@ -31,10 +31,11 @@ public:
 | 
				
			|||||||
        return IdentifyType(file);
 | 
					        return IdentifyType(file);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    static VAddr LoadModule(const std::string& path, VAddr load_base);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ResultStatus Load(Kernel::SharedPtr<Kernel::Process>& process) override;
 | 
					    ResultStatus Load(Kernel::SharedPtr<Kernel::Process>& process) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    VAddr LoadNso(const std::string& path, VAddr load_base);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::string filepath;
 | 
					    std::string filepath;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user