More safe LLE modules (#4642)

These are all safe thanks to recent work (aside from rudp, that's been safe ever since the initial socket work).
This commit is contained in:
Stephen Miller 2026-06-29 04:58:31 -05:00 committed by GitHub
parent c581ce89a9
commit 7da7a8e1f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 26 additions and 14 deletions

View File

@ -151,12 +151,15 @@ The following firmware modules are supported and must be placed in shadPS4's `sy
<div align="center">
| Modules | Modules | Modules | Modules |
|--------------------------|--------------------------|--------------------------|--------------------------|
| libSceAudiodec.sprx | libSceCesCs.sprx | libSceFont.sprx | libSceFontFt.sprx |
| libSceFreeTypeOt.sprx | libSceJpegDec.sprx | libSceJpegEnc.sprx | libSceJson.sprx |
| libSceJson2.sprx | libSceLibcInternal.sprx | libSceNgs2.sprx | libScePngEnc.sprx |
| libSceRtc.sprx | libSceSystemGesture.sprx | libSceUlt.sprx | libSceWkFontConfig.sprx |
| Modules | Modules | Modules | Modules |
|--------------------------------|--------------------------------|--------------------------------|--------------------------------|
| libSceAudiodec.sprx | libSceAudiodecCpu.sprx | libSceAudiodecCpuDdp.sprx | libSceAudiodecCpuDtsHdLbr.sprx |
| libSceAudiodecCpuHevag.sprx | libSceAudiodecCpuM4aac.sprx | libSceCesCs.sprx | libSceFont.sprx |
| libSceFontFt.sprx | libSceFreeTypeOl.sprx | libSceFreeTypeOptOl.sprx | libSceFreeTypeOt.sprx |
| libSceJpegDec.sprx | libSceJpegEnc.sprx | libSceJson.sprx | libSceJson2.sprx |
| libSceLibcInternal.sprx | libSceNgs2.sprx | libScePngEnc.sprx | libSceRtc.sprx |
| libSceRudp.sprx | libSceSystemGesture.sprx | libSceUlt.sprx | libSceWkFontConfig.sprx |
| libSceXml.sprx |
</div>
> [!Caution]

View File

@ -7360,7 +7360,7 @@ s32 PS4_SYSV_ABI Func_FE7E5AE95D3058F5() {
return ORBIS_OK;
}
void RegisterlibSceFont(Core::Loader::SymbolsResolver* sym) {
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
LIB_FUNCTION("CUKn5pX-NVY", "libSceFont", 1, "libSceFont", sceFontAttachDeviceCacheBuffer);
LIB_FUNCTION("3OdRkSjOcog", "libSceFont", 1, "libSceFont", sceFontBindRenderer);
LIB_FUNCTION("6DFUkCwQLa8", "libSceFont", 1, "libSceFont", sceFontCharacterGetBidiLevel);

View File

@ -767,5 +767,5 @@ s32 PS4_SYSV_ABI Func_EAC96B2186B71E14();
s32 PS4_SYSV_ABI Func_FE4788A96EF46256();
s32 PS4_SYSV_ABI Func_FE7E5AE95D3058F5();
void RegisterlibSceFont(Core::Loader::SymbolsResolver* sym);
void RegisterLib(Core::Loader::SymbolsResolver* sym);
} // namespace Libraries::Font

View File

@ -124,7 +124,7 @@ const OrbisFontRendererSelection* PS4_SYSV_ABI sceFontSelectRendererFt(int value
return nullptr;
}
void RegisterlibSceFontFt(Core::Loader::SymbolsResolver* sym) {
void RegisterLib(Core::Loader::SymbolsResolver* sym) {
LIB_FUNCTION("e60aorDdpB8", "libSceFontFt", 1, "libSceFontFt", sceFontFtInitAliases);
LIB_FUNCTION("BxcmiMc3UaA", "libSceFontFt", 1, "libSceFontFt", sceFontFtSetAliasFont);
LIB_FUNCTION("MEWjebIzDEI", "libSceFontFt", 1, "libSceFontFt", sceFontFtSetAliasPath);

View File

@ -51,5 +51,5 @@ s32 PS4_SYSV_ABI sceFontSelectGlyphsFt();
const OrbisFontLibrarySelection* PS4_SYSV_ABI sceFontSelectLibraryFt(int value);
const OrbisFontRendererSelection* PS4_SYSV_ABI sceFontSelectRendererFt(int value);
void RegisterlibSceFontFt(Core::Loader::SymbolsResolver* sym);
void RegisterLib(Core::Loader::SymbolsResolver* sym);
} // namespace Libraries::FontFt

View File

@ -155,7 +155,6 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) {
Libraries::CompanionHttpd::RegisterLib(sym);
Libraries::CompanionUtil::RegisterLib(sym);
Libraries::Voice::RegisterLib(sym);
Libraries::Rudp::RegisterLib(sym);
Libraries::VrTracker::RegisterLib(sym);
Libraries::ContentExport::RegisterLib(sym);
Libraries::VideoRecording::RegisterLib(sym);

View File

@ -17,6 +17,7 @@
#include "core/libraries/libs.h"
#include "core/libraries/ngs2/ngs2.h"
#include "core/libraries/rtc/rtc.h"
#include "core/libraries/rudp/rudp.h"
#include "core/libraries/sysmodule/sysmodule_error.h"
#include "core/libraries/sysmodule/sysmodule_internal.h"
#include "core/libraries/sysmodule/sysmodule_table.h"
@ -224,11 +225,20 @@ s32 loadModuleInternal(s32 index, s32 argc, const void* argv, s32* res_out) {
{"libSceLibcInternal.sprx", &Libraries::LibcInternal::RegisterLib},
{"libSceCesCs.sprx", nullptr},
{"libSceAudiodec.sprx", nullptr},
{"libSceFont.sprx", &Libraries::Font::RegisterlibSceFont},
{"libSceFontFt.sprx", &Libraries::FontFt::RegisterlibSceFontFt},
{"libSceAudiodecCpu.sprx", nullptr},
{"libSceAudiodecCpuDdp.sprx", nullptr},
{"libSceAudiodecCpuM4aac.sprx", nullptr},
{"libSceAudiodecCpuDtsHdLbr.sprx", nullptr},
{"libSceAudiodecCpuHevag.sprx", nullptr},
{"libSceFont.sprx", &Libraries::Font::RegisterLib},
{"libSceFontFt.sprx", &Libraries::FontFt::RegisterLib},
{"libSceFreeTypeOt.sprx", nullptr},
{"libSceFreeTypeOl.sprx", nullptr},
{"libSceFreeTypeOptOl.sprx", nullptr},
{"libSceRudp.sprx", &Libraries::Rudp::RegisterLib},
{"libSceWkFontConfig.sprx", nullptr},
{"libSceSystemGesture.sprx", &Libraries::SystemGesture::RegisterLib}});
{"libSceSystemGesture.sprx", &Libraries::SystemGesture::RegisterLib},
{"libSceXml.sprx", nullptr}});
// Iterate through the allowed array
const auto it = std::ranges::find_if(