X86TargetObjectFile.h revision 3192d14076dbe5724ce85b9d48644bb3c081f0e5
18c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner//===-- llvm/Target/X86/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"
149184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov#include "llvm/Target/TargetMachine.h"
158c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner#include "llvm/Target/TargetLoweringObjectFile.h"
168c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner
178c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattnernamespace llvm {
189184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov  class X86TargetMachine;
199184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov
208c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner  /// X8664_MachoTargetObjectFile - This TLOF implementation is used for
218c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner  /// Darwin/x86-64.
228c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner  class X8664_MachoTargetObjectFile : public TargetLoweringObjectFileMachO {
238c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner  public:
248c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner
258c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner    virtual const MCExpr *
263192d14076dbe5724ce85b9d48644bb3c081f0e5Chris Lattner    getExprForDwarfGlobalReference(const GlobalValue *GV, Mangler *Mang,
273192d14076dbe5724ce85b9d48644bb3c081f0e5Chris Lattner                                   MachineModuleInfo *MMI, unsigned Encoding,
283192d14076dbe5724ce85b9d48644bb3c081f0e5Chris Lattner                                   MCStreamer &Streamer) const;
299184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov  };
309184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov
319184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov  class X8632_ELFTargetObjectFile : public TargetLoweringObjectFileELF {
329184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    const X86TargetMachine &TM;
339184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov  public:
349184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    X8632_ELFTargetObjectFile(const X86TargetMachine &tm)
3530fb00aac02682cf1edef9f89b905621aa7a3c04Benjamin Kramer      :TM(tm) { }
369184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    virtual unsigned getPersonalityEncoding() const;
379184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    virtual unsigned getLSDAEncoding() const;
389184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    virtual unsigned getFDEEncoding() const;
399184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    virtual unsigned getTTypeEncoding() const;
408c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner  };
419184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov
429184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov  class X8664_ELFTargetObjectFile : public TargetLoweringObjectFileELF {
439184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    const X86TargetMachine &TM;
449184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov  public:
459184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    X8664_ELFTargetObjectFile(const X86TargetMachine &tm)
4630fb00aac02682cf1edef9f89b905621aa7a3c04Benjamin Kramer      :TM(tm) { }
479184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    virtual unsigned getPersonalityEncoding() const;
489184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    virtual unsigned getLSDAEncoding() const;
499184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    virtual unsigned getFDEEncoding() const;
509184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov    virtual unsigned getTTypeEncoding() const;
519184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov  };
529184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov
538c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner} // end namespace llvm
548c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner
558c6ed05157e9c97ff8f3ccb211dd797e53228da1Chris Lattner#endif
56