LLVM  4.0.0
SparcTargetObjectFile.cpp
Go to the documentation of this file.
1 //===------- SparcTargetObjectFile.cpp - Sparc Object Info Impl -----------===//
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 #include "SparcTargetObjectFile.h"
13 #include "llvm/Support/Dwarf.h"
15 
16 using namespace llvm;
17 
19  const GlobalValue *GV, unsigned Encoding, const TargetMachine &TM,
20  MachineModuleInfo *MMI, MCStreamer &Streamer) const {
21 
22  if (Encoding & dwarf::DW_EH_PE_pcrel) {
24 
25  MCSymbol *SSym = getSymbolWithGlobalValueBase(GV, ".DW.stub", TM);
26 
27  // Add information about the stub reference to ELFMMI so that the stub
28  // gets emitted by the asmprinter.
29  MachineModuleInfoImpl::StubValueTy &StubSym = ELFMMI.getGVStubEntry(SSym);
30  if (!StubSym.getPointer()) {
31  MCSymbol *Sym = TM.getSymbol(GV);
33  }
34 
35  MCContext &Ctx = getContext();
37  MCSymbolRefExpr::create(SSym, Ctx), Ctx);
38  }
39 
41  MMI, Streamer);
42 }
PointerIntPair< MCSymbol *, 1, bool > StubValueTy
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx)
Definition: MCExpr.h:298
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition: MCSymbol.h:39
MCSymbol * getSymbol(const GlobalValue *GV) const
Base class for the full range of assembler expressions which are needed for parsing.
Definition: MCExpr.h:34
Context object for machine code objects.
Definition: MCContext.h:51
PointerTy getPointer() const
Streaming machine code generation interface.
Definition: MCStreamer.h:161
PointerIntPair - This class implements a pair of a pointer and small integer.
const MCExpr * getTTypeGlobalReference(const GlobalValue *GV, unsigned Encoding, const TargetMachine &TM, MachineModuleInfo *MMI, MCStreamer &Streamer) const override
Return an MCExpr to use for a reference to the specified type info global variable from exception han...
Ty & getObjFileInfo()
Keep track of various per-function pieces of information for backends that would like to do so...
StubValueTy & getGVStubEntry(MCSymbol *Sym)
const MCExpr * getTTypeGlobalReference(const GlobalValue *GV, unsigned Encoding, const TargetMachine &TM, MachineModuleInfo *MMI, MCStreamer &Streamer) const override
Return an MCExpr to use for a reference to the specified type info global variable from exception han...
MachineModuleInfoELF - This is a MachineModuleInfoImpl implementation for ELF targets.
static const SparcMCExpr * create(VariantKind Kind, const MCExpr *Expr, MCContext &Ctx)
Definition: SparcMCExpr.cpp:28
bool hasLocalLinkage() const
Definition: GlobalValue.h:415
MCSymbol * getSymbolWithGlobalValueBase(const GlobalValue *GV, StringRef Suffix, const TargetMachine &TM) const
Return the MCSymbol for a private symbol with global value name as its base, with the specified suffi...
Primary interface to the complete machine description for the target machine.
This class contains meta information specific to a module.
This file describes how to lower LLVM code to machine code.