The sceSystemServiceUsbStorage* exports jump straight into the USB storage
module, so call the matching libSceUsbStorage export instead of throwing.
RequestMapWSB keeps its marker while its two declarations disagree on the
fourth argument and the output type.
The Windows writer accepted any image up to the 2 GiB RVA bound, so an
image with a SizeOfImage above 0x77000000 converted with exit 0 and then
failed to start with ERROR_BAD_EXE_FORMAT (193). WindowsPeWriter::Write
now refuses such an image, matching the loader's SizeOfImage >
MM_SIZE_OF_LARGEST_IMAGE (0x77000000) test, which applies to executables
and to bundled modules alike. Images with a SizeOfImage of at most
0x77000000 are written unchanged.
conventions_ci_gate built a git repository and ran check_conventions.py
as a subprocess for each of its 35 checks, and took 40.57 s in the
Windows relinker CI job 122160160306. CONTRIBUTING.md requires every
test to finish in 30 s and to be shrunk when it gets close. The test now
commits each case as its own workflow file in one repository, runs one
real Check.workflows() in process and asserts each file's findings. Two
subprocess runs keep the end-to-end path: the repository's workflows
and one job without a gate.
LinuxElfPatcher::Patch zeroed only e_ident bytes 7 and 8 of the output
executable, and ElfReader checks only bytes 0 to 6, so nonzero EI_PAD
bytes 9 to 15 of the input reached the output in every Linux mode. The
gABI reserves EI_PAD as zero, and glibc's open_verify refuses an object
with nonzero padding when ld.so maps the program itself, as under ldd
or an explicit ld-linux-x86-64.so.2 invocation. The patcher now zeroes
bytes 7 to 15, the rule that #11582 applies to guest modules. Only
reserved bytes change, and a direct exec is unaffected either way.
agc_driver_packed_unorm4444_partial_write failed on devices without
shaderStorageImageReadWithoutFormat (Intel HD 630 on Mesa ANV): a
partial write merges into the target in the pixel shader, and
EmitStorageImageRead refuses the read of the target ("storage image
reads without a format are unavailable on the target device"). The test
checked only fragmentShaderPixelInterlock.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
JsonObject held std::pair<std::string, JsonValue> while JsonValue was
still incomplete. Clang with libstdc++ instantiates the pair and the
vector destructor at the end of JsonValue and stops with "incomplete
type used in type trait expression". A named JsonMember struct defined
after JsonValue keeps the vector element a plain class.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A RELA entry repeated with the same target, type and addend writes the
same value twice, so applying it once is equivalent. 9673868d5f made the
Windows relocation builder and the code analysis accept such duplicates,
but the strict unused-NID filter still refused one as overlapping, so
the same ELF converted with unused-filter=0 or 1 and failed with
unused-filter=2. The strict filter now records a pointer relocation
only when its slot is new or its target is identical, and still refuses
a distinct entry at one slot and a slot that an import relocation
already owns.
AI-assisted: yes
ReadProcessPrivateBytes reads RssAnon and VmSwap from /proc/self/status
on every host other than Windows. macOS has no /proc, so the overlay's
RAM line stays empty and agc_performance_overlay_statistics fails with
"the process's private memory cannot be read". On macOS it now returns
the task's phys_footprint from task_info(TASK_VM_INFO): its resident and
compressed private memory, which is what Activity Monitor shows.
jotitadev measured that this makes the test pass on macOS (#7886).
The same change is part of the macOS port in #8658.
Co-Authored-By: iamthehimansh <[email protected]>
Co-Authored-By: jotitadev <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Read the Import Directory entry only when the optional header holds it and NumberOfRvaAndSizes declares it. Require every import name to end with a NUL inside the file and resolve the names after the descriptor table is bounds-checked.