blob: 8769dcf737479653784b1ae17cea151d4e64e055 [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}