131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//===-- X86TargetObjectFile.h - X86 Object Info -----------------*- C++ -*-===// 28c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner// 38c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner// The LLVM Compiler Infrastructure 48c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner// 58c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner// This file is distributed under the University of Illinois Open Source 68c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner// License. See LICENSE.TXT for details. 78c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner// 88c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner//===----------------------------------------------------------------------===// 98c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner 108c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner#ifndef LLVM_TARGET_X86_TARGETOBJECTFILE_H 118c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner#define LLVM_TARGET_X86_TARGETOBJECTFILE_H 128c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner 13362dd0bef5437f85586c046bc53287b6fbe9c099Anton Korobeynikov#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h" 148c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner#include "llvm/Target/TargetLoweringObjectFile.h" 158c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner 168c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattnernamespace llvm { 179184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov 18a44489d5b5687e98c39947b7b64187a3ad5faf0eBill Wendling /// X86_64MachoTargetObjectFile - This TLOF implementation is used for Darwin 19757e75b03326d9e124dfd28bb34ca00c9edcd391Bill Wendling /// x86-64. 20a44489d5b5687e98c39947b7b64187a3ad5faf0eBill Wendling class X86_64MachoTargetObjectFile : public TargetLoweringObjectFileMachO { 21757e75b03326d9e124dfd28bb34ca00c9edcd391Bill Wendling public: 2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const MCExpr * 2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines getTTypeGlobalReference(const GlobalValue *GV, unsigned Encoding, 2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines Mangler &Mang, const TargetMachine &TM, 2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MachineModuleInfo *MMI, 2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCStreamer &Streamer) const override; 277afec9cc0ff1654619d30b6f30e2a4d13369c8bfRafael Espindola 287afec9cc0ff1654619d30b6f30e2a4d13369c8bfRafael Espindola // getCFIPersonalitySymbol - The symbol that gets passed to 297afec9cc0ff1654619d30b6f30e2a4d13369c8bfRafael Espindola // .cfi_personality. 3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MCSymbol *getCFIPersonalitySymbol(const GlobalValue *GV, Mangler &Mang, 3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const TargetMachine &TM, 3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines MachineModuleInfo *MMI) const override; 339184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov }; 349184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov 35d6b43a317e71246380db55a50b799b062b53cdceRafael Espindola /// X86LinuxTargetObjectFile - This implementation is used for linux x86 36d6b43a317e71246380db55a50b799b062b53cdceRafael Espindola /// and x86-64. 37d6b43a317e71246380db55a50b799b062b53cdceRafael Espindola class X86LinuxTargetObjectFile : public TargetLoweringObjectFileELF { 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines void Initialize(MCContext &Ctx, const TargetMachine &TM) override; 39a35ae962918258207f9092ccbdf4fffa1f2c70f1David Blaikie 40a35ae962918258207f9092ccbdf4fffa1f2c70f1David Blaikie /// \brief Describe a TLS variable address within debug info. 4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const MCExpr *getDebugThreadLocalSymbol(const MCSymbol *Sym) const override; 4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines }; 4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines /// \brief This implementation is used for Windows targets on x86 and x86-64. 4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines class X86WindowsTargetObjectFile : public TargetLoweringObjectFileCOFF { 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const MCExpr * 4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines getExecutableRelativeSymbol(const ConstantExpr *CE, Mangler &Mang, 4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const TargetMachine &TM) const override; 49d6b43a317e71246380db55a50b799b062b53cdceRafael Espindola }; 50d6b43a317e71246380db55a50b799b062b53cdceRafael Espindola 518c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner} // end namespace llvm 528c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner 538c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner#endif 54