Repository navigation
feat(libc): export tzname - #5009
Conversation
|
Follow-up Linux validation of this change on current Ubuntu 26.04.1 / WSL2, GCC 15.2.0, Ninja Release, bundled dependencies, Removing this change from This was a scoped library build and native Linux test run, not a full Linux application build or a Linux ES-DE run. No further game run was performed. AI-assisted validation with Codex; Claude's original implementation remains unchanged. |
|
Windows test of this PR. Environment: Windows 10 (19045), MinGW-w64 GCC 15.2.0 (WinLibs r7), Release, Result: guest_time_conversion (1 of 1) passes. Not checked: whether the test fails without the change in the library code; the PR was not tested alone, only in the combined merge; no title run; Linux not tested. AI-assisted (Claude Code). |
ES-DE in RetroArch (PPSA99169) imports tzname from libSceLibcInternal and fails to load without it; ICU's uprv_tzname reads it after localtime. It points at the host's zone names and tzset refreshes it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Rebased onto |
8d6b8df to
aebc3f1
Compare
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
|
What
ES-DE, the second frontend in RetroArch (PPSA99169,
/app0/es-de/es-de.bin), importstznamefromlibSceLibcInternal, which nothing exports. Its relinked executable stops at load:(
BAYjQubSZT8istznamein the aerolib NID list;tools/import_audit.pyreports it as the only absent import ofes-de.bin.)The only code in
es-de.binthat reads it (0xF13ADB–0xF13C0C) is ICU'suprv_tzname: twolocaltime_rprobes, thetm_isdst > 0checks, thentzname[0]andtzname[1]passed toremapShortTimeZone, andtzname[n]returned when that finds nothing. ICU falls back to it when detecting the default time zone.tznameis now achar*[2]data export oflibc, next totzset, which ES-DE also imports fromlibSceLibcInternaland which already resolves there. It points at the host's zone names (_tznameon Windows,tznameon Linux). It is filled when the library loads, after the existing LinuxTZsetup, and refreshed bytzset, because glibc can move its strings when the zone changes.tm_zoneand%Zalready come from the same host names. The Windows full names withoutTZ, the empty or repeated daylight name of a zone without daylight-saving time, and the unknown console values are recorded indocs/dev/debt/libc.md.Tested
guest_time_conversion(all 83 libc tests pass on Windows): aftertzsetwithTZ=UTC-5,tzname[0]isUTCandtzname[1]is set; withTZ=EST5EDT, they areESTandEDT. Without the export the test does not link. glibc gives the same names for both strings (checked in Ubuntu/WSL with a C program); the full Linux build was not run locally.es-de.binconverted and started through feat: convert a title's other executables and start them with sceSystemServiceLoadExec #4786: before, the load fails as above. After, ES-DE starts and its own log recordsstart: arguments for ES-DE 1. It creates its Vulkan device and swapchain and then stops in the AGC translator (last provoking vertex with explicit per-vertex triangle-strip interpolation is unsupported).python tools/check_conventions.py --base origin/mainpasses.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code