PPCTargetObjectFile.h revision 36b56886974eae4f9c5ebc96befd3e7bfe5de338
1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//===-- PPCTargetObjectFile.h - PPC Object Info -----------------*- C++ -*-===//
2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//
3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//                     The LLVM Compiler Infrastructure
4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//
5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// This file is distributed under the University of Illinois Open Source
6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// License. See LICENSE.TXT for details.
7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//
8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//===----------------------------------------------------------------------===//
9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifndef LLVM_TARGET_PPC_TARGETOBJECTFILE_H
11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define LLVM_TARGET_PPC_TARGETOBJECTFILE_H
12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "llvm/Target/TargetLoweringObjectFile.h"
15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "llvm/Target/TargetMachine.h"
16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownnamespace llvm {
18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  /// PPC64LinuxTargetObjectFile - This implementation is used for
20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  /// 64-bit PowerPC Linux.
21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  class PPC64LinuxTargetObjectFile : public TargetLoweringObjectFileELF {
22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    const MCSection *SelectSectionForGlobal(const GlobalValue *GV,
26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown                                        SectionKind Kind, Mangler &Mang,
27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown                                        const TargetMachine &TM) const override;
28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    /// \brief Describe a TLS variable address within debug info.
30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    const MCExpr *getDebugThreadLocalSymbol(const MCSymbol *Sym) const override;
31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  };
32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}  // end namespace llvm
34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif
36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown