131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//===-- XCoreTargetObjectFile.h - XCore Object Info -------------*- C++ -*-===//
2f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner//
3f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner//                     The LLVM Compiler Infrastructure
4f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner//
5f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner// This file is distributed under the University of Illinois Open Source
6f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner// License. See LICENSE.TXT for details.
7f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner//
8f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner//===----------------------------------------------------------------------===//
9f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner
10f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner#ifndef LLVM_TARGET_XCORE_TARGETOBJECTFILE_H
11f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner#define LLVM_TARGET_XCORE_TARGETOBJECTFILE_H
12f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner
13362dd0bef5437f85586c046bc53287b6fbe9c099Anton Korobeynikov#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
14f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner
15f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattnernamespace llvm {
16f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner
1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesstatic const unsigned CodeModelLargeSize = 256;
1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
19f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner  class XCoreTargetObjectFile : public TargetLoweringObjectFileELF {
2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines   const MCSection *BSSSectionLarge;
2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines   const MCSection *DataSectionLarge;
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines   const MCSection *ReadOnlySectionLarge;
2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines   const MCSection *DataRelROSectionLarge;
24f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner  public:
25dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines    void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
26a87dea4f8c546ca748f1777a8d1cabcc06515d91Chris Lattner
2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines    const MCSection *
2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      getExplicitSectionGlobal(const GlobalValue *GV,
2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                               SectionKind Kind, Mangler &Mang,
3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                               const TargetMachine &TM) const override;
3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines    const MCSection *
3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                             Mangler &Mang,
3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                             const TargetMachine &TM) const override;
3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines    const MCSection *getSectionForConstant(SectionKind Kind) const override;
38f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner  };
39f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner} // end namespace llvm
40f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner
41f0144127b98425d214e59e4a1a4b342b78e3642bChris Lattner#endif
42