diff options
author | Keith Smiley <keithbsmiley@gmail.com> | 2022-12-05 10:21:46 -0800 |
---|---|---|
committer | Keith Smiley <keithbsmiley@gmail.com> | 2022-12-12 10:21:12 -0800 |
commit | 988ab0048daf893a50019ce4056297fbaf130956 (patch) | |
tree | f3761f5630a641809845019df6e70a67ce32f18e /llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp | |
parent | fd21361a794207e01b26e1db57217b0ddad47be5 (diff) | |
download | llvm-988ab0048daf893a50019ce4056297fbaf130956.zip llvm-988ab0048daf893a50019ce4056297fbaf130956.tar.gz llvm-988ab0048daf893a50019ce4056297fbaf130956.tar.bz2 |
[ORC] Extract hasInitializerSection for testing (NFC)
Based on the discussion in https://reviews.llvm.org/D130221 and https://reviews.llvm.org/D139223
Differential Revision: https://reviews.llvm.org/D139347
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp index 255aff3..1a4a451 100644 --- a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp +++ b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp @@ -9,6 +9,7 @@ #include "llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h" #include "llvm/ExecutionEngine/JITLink/EHFrameSupport.h" #include "llvm/ExecutionEngine/Orc/DebugObjectManagerPlugin.h" +#include "llvm/ExecutionEngine/Orc/ObjectFileInterface.h" #include "llvm/Support/MemoryBuffer.h" #include <string> #include <vector> @@ -57,35 +58,12 @@ private: LGI.SymbolFlags[ES.intern(Sym->getName())] = Flags; } - if ((G.getTargetTriple().isOSBinFormatMachO() && hasMachOInitSection(G)) || - (G.getTargetTriple().isOSBinFormatELF() && hasELFInitSection(G))) + if (hasInitializerSection(G)) LGI.InitSymbol = makeInitSymbol(ES, G); return LGI; } - static bool hasMachOInitSection(LinkGraph &G) { - for (auto &Sec : G.sections()) - if (Sec.getName() == "__DATA,__objc_selrefs" || - Sec.getName() == "__DATA,__objc_classlist" || - Sec.getName() == "__TEXT,__swift5_protos" || - Sec.getName() == "__TEXT,__swift5_proto" || - Sec.getName() == "__TEXT,__swift5_types" || - Sec.getName() == "__DATA,__mod_init_func") - return true; - return false; - } - - static bool hasELFInitSection(LinkGraph &G) { - for (auto &Sec : G.sections()) { - auto SecName = Sec.getName(); - if (SecName.consume_front(".init_array") && - (SecName.empty() || SecName[0] == '.')) - return true; - } - return false; - } - static SymbolStringPtr makeInitSymbol(ExecutionSession &ES, LinkGraph &G) { std::string InitSymString; raw_string_ostream(InitSymString) |