[llvm] [BOLT] Support runtime library hook via DT_INIT_ARRAY (PR #167467)

Maksim Panchenko via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 25 00:39:31 PST 2025


================
@@ -5692,14 +5870,21 @@ void RewriteInstance::patchELFDynamic(ELFObjectFile<ELFT> *File) {
       }
       RuntimeLibrary *RtLibrary = BC->getRuntimeLibrary();
       if (RtLibrary && Dyn.getTag() == ELF::DT_FINI) {
-        if (uint64_t Addr = RtLibrary->getRuntimeFiniAddress())
+        if (uint64_t Addr = RtLibrary->getRuntimeFiniAddress()) {
           NewDE.d_un.d_ptr = Addr;
+          outs() << "BOLT-INFO: Runtime library finalization was hooked via "
+                    "DT_FINI, set to 0x"
+                 << Twine::utohexstr(Addr) << "\n";
+        }
       }
-      if (RtLibrary && Dyn.getTag() == ELF::DT_INIT && !BC->HasInterpHeader) {
+      if (RtLibrary && Dyn.getTag() == ELF::DT_INIT &&
+          (!BC->HasInterpHeader ||
+           opts::RuntimeLibInitHook == opts::RLIH_INIT)) {
         if (auto Addr = RtLibrary->getRuntimeStartAddress()) {
-          LLVM_DEBUG(dbgs() << "BOLT-DEBUG: Set DT_INIT to 0x"
-                            << Twine::utohexstr(Addr) << '\n');
           NewDE.d_un.d_ptr = Addr;
+          outs() << "BOLT-INFO: Runtime library initialization was hooked via "
----------------
maksfb wrote:

```suggestion
          BC->outs() << "BOLT-INFO: runtime library initialization was hooked via "
```

https://github.com/llvm/llvm-project/pull/167467


More information about the llvm-commits mailing list