brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 07e9caf Raw
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