[llvm] [BOLT] Support instrumentation hook via DT_INIT_ARRAY (PR #167467)
Paschalis Mpeis via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 12 06:42:48 PST 2025
================
@@ -1407,6 +1414,55 @@ void RewriteInstance::discoverBOLTReserved() {
NextAvailableAddress = BC->BOLTReserved.start();
}
+Error RewriteInstance::discoverRtInitAddress() {
+ if (BC->HasInterpHeader && !opts::InstrumentNoUseEntryPoint)
+ return Error::success();
+
+ // Use DT_INIT if it's available.
+ if (BC->InitAddress) {
+ BC->StartFunctionAddress = BC->InitAddress;
+ return Error::success();
+ }
+
+ if (!BC->InitArrayAddress || !BC->InitArraySize) {
+ return createStringError(std::errc::not_supported,
+ "Instrumentation of shared library needs either "
+ "DT_INIT or DT_INIT_ARRAY");
+ }
+
+ if (*BC->InitArraySize < BC->AsmInfo->getCodePointerSize()) {
+ return createStringError(std::errc::not_supported,
+ "Need at least 1 DT_FINI_ARRAY slot");
----------------
paschalis-mpeis wrote:
typo?
```suggestion
"Need at least 1 DT_INIT_ARRAY slot");
```
https://github.com/llvm/llvm-project/pull/167467
More information about the llvm-commits
mailing list