Repository navigation
Stop gamescope from loading libandroid.so (payload 20261023.1) - #2227
utkarshdalal wants to merge 1 commit into
Conversation
Rebuilds libgndrm_shim.so without libandroid.so and has the ICD shim load AHardwareBuffer from libnativewindow.so (GameNative/gamenative-drm#9), so OEM libraries pulled in by libandroid.so no longer bind to imagefs libraries with the same name. Also carries the gamescope A43 build from 20261023.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
Description
Gamescope sessions preload
libgndrm_shim.sointo every process, and that shim pulled inlibandroid.sowithout using it. On devicelibandroid.soloads ~215 system libraries, and they look up their own dependencies through ourLD_LIBRARY_PATH, so they bind to imagefs libraries with the same name. That is how Samsung (libcrypto.so, #2223) and Xiaomi HyperOS (libjpeg.so, #2225) ended up with "CANNOT LINK EXECUTABLE gamescope", and 5 more shared names (libexpat libpng libvulkan libxml2 libz) were waiting for the next OEM.This bumps the payload to
20261023.1, which has the libraries from GameNative/gamenative-drm#9:libgndrm_shim.sono longer depends onlibandroid.soAHardwareBuffer_*fromlibnativewindow.so, whose dependency tree shares no names with imagefsEverything else is byte-identical to
20261023(the gamescope A43 build from #2224), so this also covers the payload bump in #2224. The archive is uploaded and matches on both downloads.gamenative.app and the r2.dev fallback.Once this is verified on devices, the
gamescope_system_libslinks from #2223 and #2225 can go.Recording
Device testing pending.
Type of Change
Checklist
#code-changes, I have discussed this change there and it has been green-lighted. If I do not have access, I have still provided clear context in this PR. If I skip both, I accept that this change may face delays in review, may not be reviewed at all, or may be closed.CONTRIBUTING.md.Summary by cubic
Bumps the gamescope payload to
20261023.1solibgndrm_shim.sono longer preloadslibandroid.sointo every process.The old shim pulled in
libandroid.so, whose ~215 system libraries could bind to imagefs libraries with the same name throughLD_LIBRARY_PATH. That causedCANNOT LINK EXECUTABLE gamescopeon Samsung (libcrypto.so) and Xiaomi HyperOS (libjpeg.so) devices, with more name collisions waiting. The new payload getsAHardwareBuffer_*fromlibnativewindow.so, whose dependency tree shares no names with imagefs. Everything else is byte-identical to20261023and also carries the gamescope A43 build. Once verified on devices, thegamescope_system_libslinks from the earlier Samsung and Xiaomi fixes can go.Written for commit 73deca4. Summary will update on new commits.
Summary by CodeRabbit