Luci: Loader-based Dynamic Software Updates for Off-the-shelf Shared Objects
summary
Luci implements a linker/loader that performs dynamic software updates for off-the-shelf shared objects by exploiting PIC relocations and GOT patching, using inotify to detect package updates and mapping non-writable sections into new memory areas while creating aliases for writable sections. It replaces the standard runtime linker (ld‑so), applies relocations, installs a user page‑fault handler for dangling function pointers, and reports compatibility via debug/DWARF metadata. Evaluation on Expat, libxcrypt, OpenSSL and Debian/Ubuntu packages updates most releases—updates 17 of 27 releases automatically—requiring nine restarts, with identical test-suite outputs and no measured runtime overhead.
AI-written summary · about
chapters (12)
- 0:00Introduction
- 2:50Requirements for dynamic updates
- 3:33Focus on library updates
- 5:40How libraries load
- 6:24Design of Lucy linker
- 7:26Runtime update process
- 8:52Advantages of linker updates
- 9:59Lucy implementation
- 11:23Evaluating Lucy
- 13:31Testing with Expat
- 15:38Handling Debian binaries
- 17:45Summary
related talks
56mComparison of Linux Software Update Technologies
51mUsing SWUpdate to Upgrade Your System
45mSoftware Update for IoT: The Current State of Play
05mProject Lightning Talk: Project Copacetic
55mDynamically Loaded Libraries Outside the Standard
41mDelta Updates: Making Updates Leaner
16mIntroduction to Procedural Debugging through Binary Libification
41mLivepatch in Userspace Based on Uprobe
