diff --git a/orbis-kernel/src/module.cpp b/orbis-kernel/src/module.cpp index b5a4a22cb..aa3436316 100644 --- a/orbis-kernel/src/module.cpp +++ b/orbis-kernel/src/module.cpp @@ -87,6 +87,10 @@ static orbis::SysResult doRelocation(orbis::Process *process, auto &defModule = module->importedModules.at(symbol.moduleIndex); if (!defModule) { + std::printf( + "'%s' ('%s') uses undefined symbol '%llx' in unloaded module\n", + module->moduleName, module->soName, (unsigned long long)symbol.id); + return std::pair(module, symbol.address); } diff --git a/rpcsx-os/iodev/dmem.cpp b/rpcsx-os/iodev/dmem.cpp index 30eef28a7..37b348efc 100644 --- a/rpcsx-os/iodev/dmem.cpp +++ b/rpcsx-os/iodev/dmem.cpp @@ -59,12 +59,6 @@ static orbis::ErrorCode dmem_ioctl(orbis::File *file, std::uint64_t request, return device->queryMaxFreeChunkSize(&args->searchStart, args->searchEnd, args->alignment, &args->size); - - ORBIS_LOG_WARNING("dmem getAvailableSize", device->index, argp, dmemSize); - // args->searchStart = device->nextOffset; - // args->size = dmemSize - device->nextOffset; - - return {}; } case 0xc0288011: diff --git a/rpcsx-os/linker.cpp b/rpcsx-os/linker.cpp index 4b4dd1a49..d767709af 100644 --- a/rpcsx-os/linker.cpp +++ b/rpcsx-os/linker.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -959,6 +960,8 @@ Ref rx::linker::loadModuleFile(std::string_view path, if (image[0] != std::byte{'\x7f'} || image[1] != std::byte{'E'} || image[2] != std::byte{'L'} || image[3] != std::byte{'F'}) { image = unself(image.data(), image.size()); + + std::ofstream("a.out", std::ios::binary).write((const char *)image.data(), image.size()); } return loadModule(image, thread->tproc); @@ -1051,5 +1054,16 @@ Ref rx::linker::loadModuleByName(std::string_view name, } } + // HACK: implement lazy bind support + for (auto path : { "/app0/Media/Modules/" }) { + auto filePath = std::string(path); + filePath += name; + filePath += ".prx"; + + if (auto result = rx::linker::loadModuleFile(filePath.c_str(), thread)) { + return result; + } + } + return {}; }