diff options
author | Lang Hames <lhames@gmail.com> | 2023-02-10 22:12:11 -0800 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2023-02-11 10:51:38 -0800 |
commit | 3d4e9d5eb0f7b0b2ad412b95239752701a734646 (patch) | |
tree | 819d23ef03a8640a67ae2059f0d558883a02c091 /llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp | |
parent | f00d101b8e320089d181afe9379cd46a414efd86 (diff) | |
download | llvm-3d4e9d5eb0f7b0b2ad412b95239752701a734646.zip llvm-3d4e9d5eb0f7b0b2ad412b95239752701a734646.tar.gz llvm-3d4e9d5eb0f7b0b2ad412b95239752701a734646.tar.bz2 |
[ORC] Move ORC-specific object format details into OrcShared.
This allows these details to be shared with JITLink, which is allowed to
depend on the OrcShared library (but not on OrcJIT).
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp index b889992..e7356e5 100644 --- a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp +++ b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp @@ -10,6 +10,7 @@ #include "llvm/ExecutionEngine/JITLink/EHFrameSupport.h" #include "llvm/ExecutionEngine/Orc/DebugObjectManagerPlugin.h" #include "llvm/ExecutionEngine/Orc/ObjectFileInterface.h" +#include "llvm/ExecutionEngine/Orc/Shared/ObjectFormats.h" #include "llvm/Support/MemoryBuffer.h" #include <string> #include <vector> @@ -22,6 +23,22 @@ using namespace llvm::orc; namespace { +bool hasInitializerSection(jitlink::LinkGraph &G) { + bool IsMachO = G.getTargetTriple().isOSBinFormatMachO(); + bool IsElf = G.getTargetTriple().isOSBinFormatELF(); + if (!IsMachO && !IsElf) + return false; + + for (auto &Sec : G.sections()) { + if (IsMachO && isMachOInitializerSection(Sec.getName())) + return true; + if (IsElf && isELFInitializerSection(Sec.getName())) + return true; + } + + return false; +} + JITSymbolFlags getJITSymbolFlagsForSymbol(Symbol &Sym) { JITSymbolFlags Flags; |