X86TargetObjectFile.h revision 9184b25fa543a900463215c11635c2c014ddb623
1//===-- llvm/Target/X86/X86TargetObjectFile.h - X86 Object Info -*- C++ -*-===//
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#ifndef LLVM_TARGET_X86_TARGETOBJECTFILE_H
11#define LLVM_TARGET_X86_TARGETOBJECTFILE_H
12
13#include "llvm/Target/TargetMachine.h"
14#include "llvm/Target/TargetLoweringObjectFile.h"
15
16namespace llvm {
17  class X86TargetMachine;
18
19  /// X8632_MachoTargetObjectFile - This TLOF implementation is used for
20  /// Darwin/x86-32.
21  class X8632_MachoTargetObjectFile : public TargetLoweringObjectFileMachO {
22  public:
23
24    virtual const MCExpr *
25    getSymbolForDwarfGlobalReference(const GlobalValue *GV, Mangler *Mang,
26                              MachineModuleInfo *MMI, unsigned Encoding) const;
27    virtual unsigned getPersonalityEncoding() const;
28    virtual unsigned getLSDAEncoding() const;
29    virtual unsigned getFDEEncoding() const;
30    virtual unsigned getTTypeEncoding() const;
31  };
32
33  /// X8664_MachoTargetObjectFile - This TLOF implementation is used for
34  /// Darwin/x86-64.
35  class X8664_MachoTargetObjectFile : public TargetLoweringObjectFileMachO {
36  public:
37
38    virtual const MCExpr *
39    getSymbolForDwarfGlobalReference(const GlobalValue *GV, Mangler *Mang,
40                              MachineModuleInfo *MMI, unsigned Encoding) const;
41    virtual unsigned getPersonalityEncoding() const;
42    virtual unsigned getLSDAEncoding() const;
43    virtual unsigned getFDEEncoding() const;
44    virtual unsigned getTTypeEncoding() const;
45  };
46
47  class X8632_ELFTargetObjectFile : public TargetLoweringObjectFileELF {
48    const X86TargetMachine &TM;
49  public:
50    X8632_ELFTargetObjectFile(const X86TargetMachine &tm)
51      :TM(tm) { };
52    virtual unsigned getPersonalityEncoding() const;
53    virtual unsigned getLSDAEncoding() const;
54    virtual unsigned getFDEEncoding() const;
55    virtual unsigned getTTypeEncoding() const;
56  };
57
58  class X8664_ELFTargetObjectFile : public TargetLoweringObjectFileELF {
59    const X86TargetMachine &TM;
60  public:
61    X8664_ELFTargetObjectFile(const X86TargetMachine &tm)
62      :TM(tm) { };
63    virtual unsigned getPersonalityEncoding() const;
64    virtual unsigned getLSDAEncoding() const;
65    virtual unsigned getFDEEncoding() const;
66    virtual unsigned getTTypeEncoding() const;
67  };
68
69} // end namespace llvm
70
71#endif
72