Merge pull request #10944 from ahmadmuj/fix/anyps5-unbuilt-split-exports

fix(prx): build and export the stubs that eight libraries never shipped
This commit is contained in:
Dean authored and GitHub committed 2026-10-27 10:56:58 +13:00
commit 66beccdd49
13 files changed
+35

No files matched your search

+1
View File
@@ -1,4 +1,5 @@
add_library(libSceAgc SHARED EXCLUDE_FROM_ALL
${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Unimplemented.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Acb/src/Control.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Acb/src/Dispatch.cpp
@@ -1,4 +1,5 @@
#include "prx/libSceAgc/Misc/include/Platform.hpp"
#include "prx/libSceAgc/include/Agc.hpp"
#include "prx/libc/include/general/VabiMacros.hpp"
#include "prx/libc/include/Shutdown.hpp"
@@ -34,12 +35,18 @@ void testRejections() {
expectFailure([] { sceAgcGetIsTrinityMode(nullptr); });
}
void testExportLinked() {
auto* volatile linked = &sceAgcSuspendPointAndCheckStatus;
check(linked != nullptr, "sceAgcSuspendPointAndCheckStatus is not linked");
}
}
int main() {
try {
testTrinityMode();
testRejections();
testExportLinked();
LibcRunShutdown_nid_postfix();
std::puts("AGC platform tests passed");
return 0;
@@ -238,6 +238,7 @@ foreach(agcOverlayStage IN ITEMS Vert Frag)
endforeach()
set(agcDriverSources
${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Unimplemented.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Execution/src/ComputePipelineCapture.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Execution/src/DisplayBuffer.cpp
@@ -4,5 +4,7 @@
int main() {
if (sceAgcDriverGetCoredumpAddress() != nullptr) return 1;
if (sceAgcDriverSetTargetRingForDiag() != static_cast<int>(0x8A6D0001)) return 2;
auto* volatile linked = &sceAgcDriverSetFlip;
if (linked == nullptr) return 3;
return 0;
}
@@ -1,2 +1,3 @@
include(${CMAKE_CURRENT_SOURCE_DIR}/../libSceAudiodec/AudiodecLibrary.cmake)
add_sce_audiodec_library(libSceAudiodec.native)
target_sources(libSceAudiodec.native PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp)
@@ -1,2 +1,4 @@
include(${CMAKE_CURRENT_SOURCE_DIR}/../libSceAvPlayer/AvPlayerLibrary.cmake)
add_sce_avplayer_library(libSceAvPlayer.native)
target_sources(libSceAvPlayer.native PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp PROPERTIES COMPILE_OPTIONS -fvisibility=default)
@@ -1,5 +1,7 @@
include(${CMAKE_CURRENT_SOURCE_DIR}/Ngs2Library.cmake)
add_sce_ngs2_library(libSceNgs2.native)
target_sources(libSceNgs2.native PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp PROPERTIES COMPILE_OPTIONS -fvisibility=default)
if(BUILD_TESTING)
add_test_executable(ngs2_custom_safety_tests ${CMAKE_CURRENT_SOURCE_DIR}/tests/Ngs2CustomSafety.cpp)
@@ -1,4 +1,5 @@
#include "Ngs2Test.hpp"
#include "prx/libSceNgs2.native/include/Api.hpp"
#include <cstdint>
#include <cstdio>
@@ -13,6 +14,11 @@ static void Status(int actual, int expected, const char* message) {
if (actual != expected) throw std::runtime_error(message);
}
static void CheckExportLinked() {
auto* volatile linked = &sceNgs2RackQueryInfo;
Require(linked != nullptr);
}
static void CheckResetOption() {
Status(sceNgs2SystemResetOption(nullptr), static_cast<int>(0x804A8010u), "null system option did not return the invalid out address error");
constexpr std::uint64_t size = 0x90;
@@ -316,6 +322,7 @@ int main() {
CheckSystemOption();
CheckSetGrainSamples();
CheckSetSampleRate();
CheckExportLinked();
std::cout << "NGS2 PS5 handle errors and validation precedence checked\n";
return 0;
} catch (const std::exception& error) {
+1
View File
@@ -1,6 +1,7 @@
include(${CMAKE_CURRENT_SOURCE_DIR}/../libSceNgs2.native/Ngs2Library.cmake)
add_sce_ngs2_library(libSceNgs2)
target_sources(libSceNgs2 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/PendingExports.cpp)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/PendingExports.cpp PROPERTIES COMPILE_OPTIONS -fvisibility=default)
if(BUILD_TESTING)
add_test_executable(ngs2_core_custom_safety_tests ${CMAKE_CURRENT_SOURCE_DIR}/../libSceNgs2.native/tests/Ngs2CustomSafety.cpp)
@@ -1,4 +1,5 @@
add_library(libSceNpTrophy2 SHARED EXCLUDE_FROM_ALL
${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Context.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Handle.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/GameInfo.cpp
@@ -1,4 +1,5 @@
add_library(libSceNpUniversalDataSystem SHARED EXCLUDE_FROM_ALL
${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp
${CMAKE_CURRENT_SOURCE_DIR}/PendingExports.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/System.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Context.cpp
+3
View File
@@ -29,6 +29,9 @@ int main() {
Require(sceNpTrophy2ShowTrophyList(1) == 0);
auto* volatile linked = &sceNpTrophy2SystemCreateContext;
Require(linked != nullptr);
NpTrophy2GameDetails details{};
NpTrophy2GameData data{};
Require(sceNpTrophy2GetGameInfo(1, 1, &details, nullptr) == 0);
+6
View File
@@ -223,6 +223,11 @@ static void ReportPlaceholders() {
}
}
static void ReportExportLinked() {
auto* volatile linked = &sceNpUniversalDataSystemIntInitialize;
Require(linked != nullptr, "sceNpUniversalDataSystemIntInitialize is not linked");
}
int main() {
const auto previous = std::filesystem::current_path();
const auto root = std::filesystem::temp_directory_path() / ("anyps5-trophy-data-" + std::to_string(std::random_device{}()));
@@ -236,6 +241,7 @@ int main() {
ReportTrophyData(context);
PostUnlocks(context);
ReportPlaceholders();
ReportExportLinked();
std::filesystem::current_path(previous);
std::filesystem::remove_all(root);