blob: 87059ef2b88f6d418a8596935de806519a01b5fa [file] [log] [blame]
Lang Hamesaac59a22016-08-04 20:32:37 +00001//===----------- JITSymbol.cpp - JITSymbol class implementation -----------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// JITSymbol class implementation plus helper functions.
11//
12//===----------------------------------------------------------------------===//
13
14#include "llvm/ExecutionEngine/JITSymbol.h"
15#include "llvm/IR/GlobalValue.h"
16#include "llvm/Object/SymbolicFile.h"
17
18using namespace llvm;
19
20JITSymbolFlags llvm::JITSymbolFlags::fromGlobalValue(const GlobalValue &GV) {
21 JITSymbolFlags Flags = JITSymbolFlags::None;
Lang Hames73976f62016-08-06 22:36:26 +000022 if (GV.hasWeakLinkage() || GV.hasLinkOnceLinkage())
Lang Hamesaac59a22016-08-04 20:32:37 +000023 Flags |= JITSymbolFlags::Weak;
24 if (GV.hasCommonLinkage())
25 Flags |= JITSymbolFlags::Common;
26 if (!GV.hasLocalLinkage() && !GV.hasHiddenVisibility())
27 Flags |= JITSymbolFlags::Exported;
28 return Flags;
29}
30
31JITSymbolFlags
32llvm::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;
40 return Flags;
41}
Lang Hames14a22a42017-08-09 20:19:27 +000042
43ARMJITSymbolFlags llvm::ARMJITSymbolFlags::fromObjectSymbol(
44 const object::BasicSymbolRef &Symbol) {
45 ARMJITSymbolFlags Flags;
46 if (Symbol.getFlags() & object::BasicSymbolRef::SF_Thumb)
47 Flags |= ARMJITSymbolFlags::Thumb;
48 return Flags;
49}