50 lines · c
1//===-- llvm/Target/MipsTargetObjectFile.h - Mips Object Info ---*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_MIPS_MIPSTARGETOBJECTFILE_H10#define LLVM_LIB_TARGET_MIPS_MIPSTARGETOBJECTFILE_H11 12#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"13 14namespace llvm {15class MipsTargetMachine;16 class MipsTargetObjectFile : public TargetLoweringObjectFileELF {17 MCSection *SmallDataSection;18 MCSection *SmallBSSSection;19 const MipsTargetMachine *TM;20 21 bool IsGlobalInSmallSection(const GlobalObject *GO, const TargetMachine &TM,22 SectionKind Kind) const;23 bool IsGlobalInSmallSectionImpl(const GlobalObject *GO,24 const TargetMachine &TM) const;25 public:26 27 void Initialize(MCContext &Ctx, const TargetMachine &TM) override;28 29 /// Return true if this global address should be placed into small data/bss30 /// section.31 bool IsGlobalInSmallSection(const GlobalObject *GO,32 const TargetMachine &TM) const;33 34 MCSection *SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind,35 const TargetMachine &TM) const override;36 37 /// Return true if this constant should be placed into small data section.38 bool IsConstantInSmallSection(const DataLayout &DL, const Constant *CN,39 const TargetMachine &TM) const;40 41 MCSection *getSectionForConstant(const DataLayout &DL, SectionKind Kind,42 const Constant *C,43 Align &Alignment) const override;44 /// Describe a TLS variable address within debug info.45 const MCExpr *getDebugThreadLocalSymbol(const MCSymbol *Sym) const override;46 };47} // end namespace llvm48 49#endif50