ps4: proto fw tweaks

This commit is contained in:
DH 2024-11-25 19:06:56 +03:00
parent 28ceb7471d
commit 6257c0f76d
4 changed files with 11 additions and 2 deletions

View file

@ -17,6 +17,7 @@ struct Process;
enum class DynType : std::uint8_t {
None,
FreeBsd,
Ps4,
Ps5,
};

View file

@ -201,7 +201,7 @@ orbis::SysResult orbis::sys_dl_get_info(Thread *thread /* TODO */) {
return ErrorCode::NOSYS;
}
orbis::SysResult orbis::sys_dl_notify_event(Thread *thread /* TODO */) {
return ErrorCode::NOSYS;
return {};
}
orbis::SysResult orbis::sys_evf_create(Thread *thread, ptr<const char[32]> name,
sint attrs, uint64_t initPattern) {

View file

@ -92,6 +92,11 @@ SysResult kern_sysctl(Thread *thread, ptr<sint> name, uint namelen,
// 4.17.0.0.3.0
if (name[0] == net && name[1] == 17 && name[2] == 0 && name[3] == 0 &&
name[4] == 3 && name[5] == 0) {
if (g_context.fwSdkVersion == 0) {
// proto fw
return {};
}
return ErrorCode::OPNOTSUPP;
}
}

View file

@ -806,7 +806,10 @@ Ref<orbis::Module> rx::linker::loadModule(std::span<std::byte> image,
std::fprintf(stderr, "unexpected import type\n");
std::abort();
}
if (hasPs4Dyn) {
if (!hasPs4Dyn && !hasPs5Dyn && interpPhdrIndex >= 0) {
result->dynType = orbis::DynType::FreeBsd;
} else if (hasPs4Dyn) {
result->dynType = orbis::DynType::Ps4;
} else if (hasPs5Dyn) {
result->dynType = orbis::DynType::Ps5;