106f32e7eSjoerg //===-- XCoreTargetObjectFile.h - XCore Object Info -------------*- C++ -*-===//
206f32e7eSjoerg //
306f32e7eSjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
406f32e7eSjoerg // See https://llvm.org/LICENSE.txt for license information.
506f32e7eSjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
606f32e7eSjoerg //
706f32e7eSjoerg //===----------------------------------------------------------------------===//
806f32e7eSjoerg 
906f32e7eSjoerg #ifndef LLVM_LIB_TARGET_XCORE_XCORETARGETOBJECTFILE_H
1006f32e7eSjoerg #define LLVM_LIB_TARGET_XCORE_XCORETARGETOBJECTFILE_H
1106f32e7eSjoerg 
1206f32e7eSjoerg #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
1306f32e7eSjoerg 
1406f32e7eSjoerg namespace llvm {
1506f32e7eSjoerg 
1606f32e7eSjoerg static const unsigned CodeModelLargeSize = 256;
1706f32e7eSjoerg 
1806f32e7eSjoerg   class XCoreTargetObjectFile : public TargetLoweringObjectFileELF {
1906f32e7eSjoerg     MCSection *BSSSectionLarge;
2006f32e7eSjoerg     MCSection *DataSectionLarge;
2106f32e7eSjoerg     MCSection *ReadOnlySectionLarge;
2206f32e7eSjoerg     MCSection *DataRelROSectionLarge;
2306f32e7eSjoerg 
2406f32e7eSjoerg   public:
2506f32e7eSjoerg     void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
2606f32e7eSjoerg 
2706f32e7eSjoerg     MCSection *getExplicitSectionGlobal(const GlobalObject *GO, SectionKind Kind,
2806f32e7eSjoerg                                         const TargetMachine &TM) const override;
2906f32e7eSjoerg 
3006f32e7eSjoerg     MCSection *SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind,
3106f32e7eSjoerg                                       const TargetMachine &TM) const override;
3206f32e7eSjoerg 
3306f32e7eSjoerg     MCSection *getSectionForConstant(const DataLayout &DL, SectionKind Kind,
3406f32e7eSjoerg                                      const Constant *C,
35*da58b97aSjoerg                                      Align &Alignment) const override;
3606f32e7eSjoerg   };
3706f32e7eSjoerg } // end namespace llvm
3806f32e7eSjoerg 
3906f32e7eSjoerg #endif
40