ARMTargetObjectFile.cpp revision 263508
1//===-- llvm/Target/ARMTargetObjectFile.cpp - ARM 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 "ARMTargetObjectFile.h"
11#include "ARMSubtarget.h"
12#include "llvm/ADT/StringExtras.h"
13#include "llvm/MC/MCContext.h"
14#include "llvm/MC/MCExpr.h"
15#include "llvm/MC/MCSectionELF.h"
16#include "llvm/Support/Dwarf.h"
17#include "llvm/Support/ELF.h"
18#include "llvm/Target/Mangler.h"
19#include "llvm/Target/TargetMachine.h"
20using namespace llvm;
21using namespace dwarf;
22
23//===----------------------------------------------------------------------===//
24//                               ELF Target
25//===----------------------------------------------------------------------===//
26
27void ARMElfTargetObjectFile::Initialize(MCContext &Ctx,
28                                        const TargetMachine &TM) {
29  bool isAAPCS_ABI = TM.getSubtarget<ARMSubtarget>().isAAPCS_ABI();
30  TargetLoweringObjectFileELF::Initialize(Ctx, TM);
31  InitializeELF(isAAPCS_ABI);
32
33  if (isAAPCS_ABI) {
34    LSDASection = NULL;
35  }
36
37  AttributesSection =
38    getContext().getELFSection(".ARM.attributes",
39                               ELF::SHT_ARM_ATTRIBUTES,
40                               0,
41                               SectionKind::getMetadata());
42}
43
44const MCExpr *ARMElfTargetObjectFile::
45getTTypeGlobalReference(const GlobalValue *GV, Mangler *Mang,
46                        MachineModuleInfo *MMI, unsigned Encoding,
47                        MCStreamer &Streamer) const {
48  assert(Encoding == DW_EH_PE_absptr && "Can handle absptr encoding only");
49
50  return MCSymbolRefExpr::Create(getSymbol(*Mang, GV),
51                                 MCSymbolRefExpr::VK_ARM_TARGET2,
52                                 getContext());
53}
54