Despite its clear theoretical advantages, DT_RELR has faced a slow adoption curve. Proposed by Google and implemented initially for Android (to improve app startup times on mobile devices), it has gradually made its way into the GNU toolchain and LLVM.
The dynamic linker’s job is memory-bound. Reading a 20MB relocation table from disk into memory takes time. With DT_RELR , that table might shrink to 2MB or less. The linker has to read less data, resulting in faster load times. Furthermore, the processing logic for a bitmap is computationally cheaper than iterating through a complex struct array, allowing the CPU to resolve symbols faster. dt_relr