1204961Srdivacky//===-- llvm/Target/ARMTargetObjectFile.cpp - ARM Object Info Impl --------===//
2204961Srdivacky//
3204961Srdivacky//                     The LLVM Compiler Infrastructure
4204961Srdivacky//
5204961Srdivacky// This file is distributed under the University of Illinois Open Source
6204961Srdivacky// License. See LICENSE.TXT for details.
7204961Srdivacky//
8204961Srdivacky//===----------------------------------------------------------------------===//
9204961Srdivacky
10204961Srdivacky#include "ARMTargetObjectFile.h"
11204961Srdivacky#include "ARMSubtarget.h"
12252723Sdim#include "llvm/ADT/StringExtras.h"
13207618Srdivacky#include "llvm/MC/MCContext.h"
14252723Sdim#include "llvm/MC/MCExpr.h"
15204961Srdivacky#include "llvm/MC/MCSectionELF.h"
16204961Srdivacky#include "llvm/Support/Dwarf.h"
17218893Sdim#include "llvm/Support/ELF.h"
18252723Sdim#include "llvm/Target/Mangler.h"
19204961Srdivacky#include "llvm/Target/TargetMachine.h"
20204961Srdivackyusing namespace llvm;
21204961Srdivackyusing namespace dwarf;
22204961Srdivacky
23204961Srdivacky//===----------------------------------------------------------------------===//
24204961Srdivacky//                               ELF Target
25204961Srdivacky//===----------------------------------------------------------------------===//
26204961Srdivacky
27204961Srdivackyvoid ARMElfTargetObjectFile::Initialize(MCContext &Ctx,
28204961Srdivacky                                        const TargetMachine &TM) {
29245431Sdim  bool isAAPCS_ABI = TM.getSubtarget<ARMSubtarget>().isAAPCS_ABI();
30204961Srdivacky  TargetLoweringObjectFileELF::Initialize(Ctx, TM);
31245431Sdim  InitializeELF(isAAPCS_ABI);
32204961Srdivacky
33235633Sdim  if (isAAPCS_ABI) {
34221345Sdim    LSDASection = NULL;
35204961Srdivacky  }
36221345Sdim
37218893Sdim  AttributesSection =
38218893Sdim    getContext().getELFSection(".ARM.attributes",
39218893Sdim                               ELF::SHT_ARM_ATTRIBUTES,
40218893Sdim                               0,
41218893Sdim                               SectionKind::getMetadata());
42204961Srdivacky}
43252723Sdim
44252723Sdimconst MCExpr *ARMElfTargetObjectFile::
45252723SdimgetTTypeGlobalReference(const GlobalValue *GV, Mangler *Mang,
46252723Sdim                        MachineModuleInfo *MMI, unsigned Encoding,
47252723Sdim                        MCStreamer &Streamer) const {
48252723Sdim  assert(Encoding == DW_EH_PE_absptr && "Can handle absptr encoding only");
49252723Sdim
50263509Sdim  return MCSymbolRefExpr::Create(getSymbol(*Mang, GV),
51252723Sdim                                 MCSymbolRefExpr::VK_ARM_TARGET2,
52252723Sdim                                 getContext());
53252723Sdim}
54