Sprx: loading / reloc fixes

This commit is contained in:
Jake 2017-06-18 23:59:02 -05:00 committed by Ivan
parent 03268b0838
commit d3df83a3ea
5 changed files with 117 additions and 16 deletions

View file

@ -576,6 +576,16 @@ extern std::string ppu_get_syscall_name(u64 code)
// Get function name by FNID
extern std::string ppu_get_function_name(const std::string& module, u32 fnid)
{
if (module == "") switch (fnid)
{
// these arent the actual hash, but its close enough
case 0x0D10FD3F: return "module_prologue";
case 0x330F7005: return "module_epilogue";
case 0x3ab9a95e: return "module_exit";
case 0xBC9A0086: return "module_start";
case 0xAB779874: return "module_stop";
}
// Check known FNIDs
if (module == "sys_libc" || module == "sys_libm") switch (fnid)
{
@ -2363,6 +2373,78 @@ extern std::string ppu_get_function_name(const std::string& module, u32 fnid)
// Get variable name by VNID
extern std::string ppu_get_variable_name(const std::string& module, u32 vnid)
{
if (module == "") switch (vnid)
{
// these arent the actual hash, but its close enough
case 0xD7F43016: return "module_info";
}
// Check known FNIDs
if (module == "sys_libc") switch (vnid)
{
case 0x071928B0: return "_LNan";
case 0x0A331920: return "_Clocale";
case 0x0B2E15ED: return "_malloc_limit";
case 0x0FBC732D: return "_Zero";
case 0x17667744: return "_LInf";
case 0x210B2F6E: return "_FNan";
case 0x2418F6C0: return "__TT800";
case 0x2470D3BC: return "_Hugeval";
case 0x26A34F81: return "_Flt";
case 0x277A84BB: return "_Mutex_attr";
case 0x29E76A6D: return "_LXbig";
case 0x2CF8B5D1: return "_Wctrans";
case 0x32E56B1A: return "_Stdin";
case 0x3916A06A: return "_FILE_P_Head";
case 0x45EC2DF6: return "_LEps";
case 0x529D4301: return "_Denorm";
case 0x57DBCF27: return "_Inf";
case 0x5FF11EB4: return "_FZero";
case 0x620967C9: return "_Mbcurmax";
case 0x6524499E: return "_FInf";
case 0x67D1406B: return "__ctype_ptr";
case 0x6A09DF41: return "_LRteps";
case 0x73898DB8: return "environ";
case 0x76628EFB: return "_FSnan";
case 0x790B0082: return "_Xbig";
case 0x7AFF3242: return "_Snan";
case 0x7BC88211: return "_Tolotab";
case 0x7F456AF2: return "_Rteps";
case 0x81ACF7C1: return "_LZero";
case 0x8F87ED0C: return "_Times";
case 0x92C43F6D: return "_Eps";
case 0x96E1E748: return "tls_mutex_attr";
case 0x985FC057: return "_Dbl";
case 0x9C8454C9: return "_LSnan";
case 0xAA860D4C: return "_Wctype";
case 0xB5B84F80: return "_LDenorm";
case 0xB5D2F53B: return "_Touptab";
case 0xB6F5F98C: return "_FRteps";
case 0xD59C193C: return "_Nan";
case 0xD698385D: return "_Ldbl";
case 0xD97B0687: return "_Ctype";
case 0xE0BC8D86: return "_Loctab";
case 0xEACE53D6: return "_FDenorm";
case 0xECA056DF: return "_Locale";
case 0xEF25075B: return "_FXbig";
case 0xFB2BD688: return "_Stdout";
case 0xFEFBE065: return "_Stderr";
case 0xFF2F0CC7: return "_FEps";
}
if (module == "sys_libm") switch (vnid)
{
case 0x1CF745BC: return "_LErf_one";
case 0x2259EF96: return "_LGamma_big";
case 0x3ACAD7F1: return "_Erf_small";
case 0x3FB8629D: return "_FErf_one";
case 0x42EB9508: return "_Fenv0";
case 0x4AF28F31: return "_FErf_small";
case 0xA8D907FF: return "_LErf_small";
case 0xAD443E79: return "_Erf_one";
case 0xE9892674: return "_FGamma_big";
case 0xF39005FC: return "_Gamma_big";
}
// Check registered variables
if (const auto sm = ppu_module_manager::get_module(module))
{