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