Add static initialization/finalization array support.
This adds entries in the dynamic table for .init_array, .fini_array and
.preinit_array.
llvm-svn: 249175
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 7ffa6d2..43a92b0 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -328,8 +328,14 @@
}
}
- if (OutputSection<ELFT> *OS =
- Map.lookup({".init_array", SHT_INIT_ARRAY, SHF_WRITE | SHF_ALLOC})) {
+ DynamicSec.PreInitArraySec =
+ Map.lookup({".preinit_array", SHT_PREINIT_ARRAY, SHF_WRITE | SHF_ALLOC});
+ DynamicSec.InitArraySec =
+ Map.lookup({".init_array", SHT_INIT_ARRAY, SHF_WRITE | SHF_ALLOC});
+ DynamicSec.FiniArraySec =
+ Map.lookup({".fini_array", SHT_FINI_ARRAY, SHF_WRITE | SHF_ALLOC});
+
+ if (OutputSection<ELFT> *OS = DynamicSec.InitArraySec) {
Symtab.addSyntheticSym<ELFT>("__init_array_start", *OS, 0);
Symtab.addSyntheticSym<ELFT>("__init_array_end", *OS, OS->getSize());
} else {