ports/devel/llvm/13/patches/patch-lld_ELF_SyntheticSections_cpp

27 lines
960 B
Text
Raw Normal View History

2023-08-16 22:26:55 +00:00
- Don't create IBT .plt if there are no PLT entries. Cherry picked from
upstream.
2023-09-08 05:21:37 +00:00
Index: lld/ELF/SyntheticSections.cpp
--- lld/ELF/SyntheticSections.cpp.orig
+++ lld/ELF/SyntheticSections.cpp
@@ -2567,6 +2567,10 @@ PltSection::PltSection()
if ((config->emachine == EM_386 || config->emachine == EM_X86_64) &&
(config->andFeatures & GNU_PROPERTY_X86_FEATURE_1_IBT))
name = ".plt.sec";
+#ifdef __OpenBSD__
+ else if (config->emachine == EM_X86_64)
+ name = ".plt.sec";
+#endif
// The PLT needs to be writable on SPARC as the dynamic linker will
// modify the instructions in the PLT entries.
@@ -2728,6 +2732,8 @@ size_t IBTPltSection::getSize() const {
// 16 is the header size of .plt.
2023-08-16 22:26:55 +00:00
return 16 + in.plt->getNumEntries() * target->pltEntrySize;
}
+
+bool IBTPltSection::isNeeded() const { return in.plt->getNumEntries() > 0; }
2023-08-16 22:26:55 +00:00
// The string hash function for .gdb_index.
static uint32_t computeGdbHash(StringRef s) {