mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-05-14 08:12:16 +00:00
Handle error behavior in sceSysmoduleGetModuleInfoForUnwind stub (#2629)
* Stubby implementation of sceSysmoduleGetModuleInfoForUnwind * Update sysmodule.cpp * Minor cleanup
This commit is contained in:
parent
74c2c6c74f
commit
20ea0ee190
4 changed files with 23 additions and 16 deletions
|
@ -85,19 +85,7 @@ s32 PS4_SYSV_ABI sceKernelDlsym(s32 handle, const char* symbol, void** addrp) {
|
||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr size_t ORBIS_DBG_MAX_NAME_LENGTH = 256;
|
s32 PS4_SYSV_ABI sceKernelGetModuleInfoForUnwind(VAddr addr, s32 flags,
|
||||||
|
|
||||||
struct OrbisModuleInfoForUnwind {
|
|
||||||
u64 st_size;
|
|
||||||
std::array<char, ORBIS_DBG_MAX_NAME_LENGTH> name;
|
|
||||||
VAddr eh_frame_hdr_addr;
|
|
||||||
VAddr eh_frame_addr;
|
|
||||||
u64 eh_frame_size;
|
|
||||||
VAddr seg0_addr;
|
|
||||||
u64 seg0_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
s32 PS4_SYSV_ABI sceKernelGetModuleInfoForUnwind(VAddr addr, int flags,
|
|
||||||
OrbisModuleInfoForUnwind* info) {
|
OrbisModuleInfoForUnwind* info) {
|
||||||
if (flags >= 3) {
|
if (flags >= 3) {
|
||||||
std::memset(info, 0, sizeof(OrbisModuleInfoForUnwind));
|
std::memset(info, 0, sizeof(OrbisModuleInfoForUnwind));
|
||||||
|
|
|
@ -11,10 +11,25 @@ class SymbolsResolver;
|
||||||
|
|
||||||
namespace Libraries::Kernel {
|
namespace Libraries::Kernel {
|
||||||
|
|
||||||
|
static constexpr size_t ORBIS_DBG_MAX_NAME_LENGTH = 256;
|
||||||
|
|
||||||
|
struct OrbisModuleInfoForUnwind {
|
||||||
|
u64 st_size;
|
||||||
|
std::array<char, ORBIS_DBG_MAX_NAME_LENGTH> name;
|
||||||
|
VAddr eh_frame_hdr_addr;
|
||||||
|
VAddr eh_frame_addr;
|
||||||
|
u64 eh_frame_size;
|
||||||
|
VAddr seg0_addr;
|
||||||
|
u64 seg0_size;
|
||||||
|
};
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceKernelIsNeoMode();
|
int PS4_SYSV_ABI sceKernelIsNeoMode();
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceKernelGetCompiledSdkVersion(int* ver);
|
int PS4_SYSV_ABI sceKernelGetCompiledSdkVersion(int* ver);
|
||||||
|
|
||||||
|
s32 PS4_SYSV_ABI sceKernelGetModuleInfoForUnwind(VAddr addr, s32 flags,
|
||||||
|
OrbisModuleInfoForUnwind* info);
|
||||||
|
|
||||||
void RegisterProcess(Core::Loader::SymbolsResolver* sym);
|
void RegisterProcess(Core::Loader::SymbolsResolver* sym);
|
||||||
|
|
||||||
} // namespace Libraries::Kernel
|
} // namespace Libraries::Kernel
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "core/libraries/error_codes.h"
|
#include "core/libraries/error_codes.h"
|
||||||
|
#include "core/libraries/kernel/process.h"
|
||||||
#include "core/libraries/libs.h"
|
#include "core/libraries/libs.h"
|
||||||
#include "core/libraries/system/sysmodule.h"
|
#include "core/libraries/system/sysmodule.h"
|
||||||
#include "core/libraries/system/system_error.h"
|
#include "core/libraries/system/system_error.h"
|
||||||
|
@ -18,9 +19,12 @@ int PS4_SYSV_ABI sceSysmoduleGetModuleHandleInternal() {
|
||||||
return ORBIS_OK;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceSysmoduleGetModuleInfoForUnwind() {
|
s32 PS4_SYSV_ABI sceSysmoduleGetModuleInfoForUnwind(VAddr addr, s32 flags, void* info) {
|
||||||
LOG_ERROR(Lib_SysModule, "(STUBBED) called");
|
LOG_ERROR(Lib_SysModule, "(STUBBED) called");
|
||||||
return ORBIS_OK;
|
Kernel::OrbisModuleInfoForUnwind module_info;
|
||||||
|
module_info.st_size = 0x130;
|
||||||
|
s32 res = Kernel::sceKernelGetModuleInfoForUnwind(addr, flags, &module_info);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceSysmoduleIsCalledFromSysModule() {
|
int PS4_SYSV_ABI sceSysmoduleIsCalledFromSysModule() {
|
||||||
|
|
|
@ -152,7 +152,7 @@ enum class OrbisSysModuleInternal : u32 {
|
||||||
};
|
};
|
||||||
|
|
||||||
int PS4_SYSV_ABI sceSysmoduleGetModuleHandleInternal();
|
int PS4_SYSV_ABI sceSysmoduleGetModuleHandleInternal();
|
||||||
int PS4_SYSV_ABI sceSysmoduleGetModuleInfoForUnwind();
|
s32 PS4_SYSV_ABI sceSysmoduleGetModuleInfoForUnwind(VAddr addr, s32 flags, void* info);
|
||||||
int PS4_SYSV_ABI sceSysmoduleIsCalledFromSysModule();
|
int PS4_SYSV_ABI sceSysmoduleIsCalledFromSysModule();
|
||||||
int PS4_SYSV_ABI sceSysmoduleIsCameraPreloaded();
|
int PS4_SYSV_ABI sceSysmoduleIsCameraPreloaded();
|
||||||
int PS4_SYSV_ABI sceSysmoduleIsLoaded(OrbisSysModule id);
|
int PS4_SYSV_ABI sceSysmoduleIsLoaded(OrbisSysModule id);
|
||||||
|
|
Loading…
Add table
Reference in a new issue