llvm.org GIT mirror llvm / release_70 lib / Target / X86 / X86TargetObjectFile.h
release_70

Tree @release_70 (Download .tar.gz)

X86TargetObjectFile.h @release_70

31d157a
8c6ed05
 
 
 
 
 
 
 
00e08fc
 
8c6ed05
362dd0b
fe42bd5
8c6ed05
 
9184b25
a44489d
757e75b
a44489d
757e75b
88a23b6
 
 
 
 
7afec9c
 
 
88a23b6
737c9f6
629b96c
6bf5b2b
dfc6383
 
 
 
9184b25
 
26b584c
1f8fa31
 
5011913
 
 
 
 
26b584c
1f8fa31
 
 
e41f2a1
 
 
 
fc05fb6
 
26b584c
fc05fb6
 
e41f2a1
 
87e6561
 
 
629b96c
d6b43a3
 
26b584c
7c6b474
 
 
 
8c6ed05
 
 
//===-- X86TargetObjectFile.h - X86 Object Info -----------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_LIB_TARGET_X86_X86TARGETOBJECTFILE_H
#define LLVM_LIB_TARGET_X86_X86TARGETOBJECTFILE_H

#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
#include "llvm/Target/TargetLoweringObjectFile.h"

namespace llvm {

  /// X86_64MachoTargetObjectFile - This TLOF implementation is used for Darwin
  /// x86-64.
  class X86_64MachoTargetObjectFile : public TargetLoweringObjectFileMachO {
  public:
    const MCExpr *getTTypeGlobalReference(const GlobalValue *GV,
                                          unsigned Encoding,
                                          const TargetMachine &TM,
                                          MachineModuleInfo *MMI,
                                          MCStreamer &Streamer) const override;

    // getCFIPersonalitySymbol - The symbol that gets passed to
    // .cfi_personality.
    MCSymbol *getCFIPersonalitySymbol(const GlobalValue *GV,
                                      const TargetMachine &TM,
                                      MachineModuleInfo *MMI) const override;

    const MCExpr *getIndirectSymViaGOTPCRel(const MCSymbol *Sym,
                                            const MCValue &MV, int64_t Offset,
                                            MachineModuleInfo *MMI,
                                            MCStreamer &Streamer) const override;
  };

  /// This implemenatation is used for X86 ELF targets that don't
  /// have a further specialization.
  class X86ELFTargetObjectFile : public TargetLoweringObjectFileELF {
  public:
    X86ELFTargetObjectFile() {
      PLTRelativeVariantKind = MCSymbolRefExpr::VK_PLT;
    }

    /// Describe a TLS variable address within debug info.
    const MCExpr *getDebugThreadLocalSymbol(const MCSymbol *Sym) const override;
  };

  /// X86FreeBSDTargetObjectFile - This implementation is used for FreeBSD
  /// on x86 and x86-64.
  class X86FreeBSDTargetObjectFile : public X86ELFTargetObjectFile {
    void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
  };

  /// This implementation is used for Fuchsia on x86-64.
  class X86FuchsiaTargetObjectFile : public X86ELFTargetObjectFile {
    void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
  };

  /// X86LinuxNaClTargetObjectFile - This implementation is used for linux and
  /// Native Client on x86 and x86-64.
  class X86LinuxNaClTargetObjectFile : public X86ELFTargetObjectFile {
    void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
  };

  /// This implementation is used for Solaris on x86/x86-64.
  class X86SolarisTargetObjectFile : public X86ELFTargetObjectFile {
    void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
  };

} // end namespace llvm

#endif