Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp
35266 views
1
//===------- SparcTargetObjectFile.cpp - Sparc Object Info Impl -----------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "SparcTargetObjectFile.h"
10
#include "MCTargetDesc/SparcMCExpr.h"
11
#include "llvm/BinaryFormat/Dwarf.h"
12
#include "llvm/CodeGen/MachineModuleInfoImpls.h"
13
#include "llvm/CodeGen/TargetLowering.h"
14
#include "llvm/Target/TargetMachine.h"
15
16
using namespace llvm;
17
18
void SparcELFTargetObjectFile::Initialize(MCContext &Ctx,
19
const TargetMachine &TM) {
20
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
21
}
22
23
const MCExpr *SparcELFTargetObjectFile::getTTypeGlobalReference(
24
const GlobalValue *GV, unsigned Encoding, const TargetMachine &TM,
25
MachineModuleInfo *MMI, MCStreamer &Streamer) const {
26
27
if (Encoding & dwarf::DW_EH_PE_pcrel) {
28
MachineModuleInfoELF &ELFMMI = MMI->getObjFileInfo<MachineModuleInfoELF>();
29
30
MCSymbol *SSym = getSymbolWithGlobalValueBase(GV, ".DW.stub", TM);
31
32
// Add information about the stub reference to ELFMMI so that the stub
33
// gets emitted by the asmprinter.
34
MachineModuleInfoImpl::StubValueTy &StubSym = ELFMMI.getGVStubEntry(SSym);
35
if (!StubSym.getPointer()) {
36
MCSymbol *Sym = TM.getSymbol(GV);
37
StubSym = MachineModuleInfoImpl::StubValueTy(Sym, !GV->hasLocalLinkage());
38
}
39
40
MCContext &Ctx = getContext();
41
return SparcMCExpr::create(SparcMCExpr::VK_Sparc_R_DISP32,
42
MCSymbolRefExpr::create(SSym, Ctx), Ctx);
43
}
44
45
return TargetLoweringObjectFileELF::getTTypeGlobalReference(GV, Encoding, TM,
46
MMI, Streamer);
47
}
48
49