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