1 //===----------- JITSymbol.cpp - JITSymbol class implementation -----------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // JITSymbol class implementation plus helper functions.
12 //===----------------------------------------------------------------------===//
14 #include "llvm/ExecutionEngine/JITSymbol.h"
15 #include "llvm/IR/GlobalValue.h"
16 #include "llvm/Object/SymbolicFile.h"
20 JITSymbolFlags llvm::JITSymbolFlags::fromGlobalValue(const GlobalValue &GV) {
21 JITSymbolFlags Flags = JITSymbolFlags::None;
22 if (GV.hasWeakLinkage() || GV.hasLinkOnceLinkage())
23 Flags |= JITSymbolFlags::Weak;
24 if (GV.hasCommonLinkage())
25 Flags |= JITSymbolFlags::Common;
26 if (!GV.hasLocalLinkage() && !GV.hasHiddenVisibility())
27 Flags |= JITSymbolFlags::Exported;
32 llvm::JITSymbolFlags::fromObjectSymbol(const object::BasicSymbolRef &Symbol) {
33 JITSymbolFlags Flags = JITSymbolFlags::None;
34 if (Symbol.getFlags() & object::BasicSymbolRef::SF_Weak)
35 Flags |= JITSymbolFlags::Weak;
36 if (Symbol.getFlags() & object::BasicSymbolRef::SF_Common)
37 Flags |= JITSymbolFlags::Common;
38 if (Symbol.getFlags() & object::BasicSymbolRef::SF_Exported)
39 Flags |= JITSymbolFlags::Exported;