LLVM 24.0.0git
RISCVTargetObjectFile.h
Go to the documentation of this file.
1//===-- RISCVTargetObjectFile.h - RISC-V 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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_TARGET_RISCV_RISCVTARGETOBJECTFILE_H
10#define LLVM_LIB_TARGET_RISCV_RISCVTARGETOBJECTFILE_H
11
13
14namespace llvm {
15
16/// This implementation is used for RISC-V ELF targets.
18 MCSection *SmallDataSection;
19 MCSection *SmallRODataSection;
20 MCSection *SmallROData4Section;
21 MCSection *SmallROData8Section;
22 MCSection *SmallROData16Section;
23 MCSection *SmallROData32Section;
24 MCSection *SmallBSSSection;
25 unsigned SSThreshold = 0;
26
27public:
28 unsigned getTextSectionAlignment() const override;
29
30 void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
31
32 /// Return true if this global address should be placed into small data/bss
33 /// section.
35 const TargetMachine &TM) const;
36
38 const TargetMachine &TM) const override;
39
40 /// Return true if this constant should be placed into small data section.
41 bool isConstantInSmallSection(const DataLayout &DL, const Constant *CN) const;
42
44 const Constant *C, Align &Alignment,
45 const Function *F) const override;
46
47 void getModuleMetadata(Module &M) override;
48
49 bool isInSmallSection(uint64_t Size) const;
50
52 const MCSymbol *Sym,
53 const MCValue &MV, int64_t Offset,
55 MCStreamer &Streamer) const override;
56};
57
59public:
61
63 const TargetMachine &TM) const override;
64};
65
66} // end namespace llvm
67
68#endif
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
#define F(x, y, z)
Definition MD5.cpp:54
This is an important base class in LLVM.
Definition Constant.h:43
A parsed version of the target data layout string in and methods for querying it.
Definition DataLayout.h:64
Context object for machine code objects.
Definition MCContext.h:83
Base class for the full range of assembler expressions which are needed for parsing.
Definition MCExpr.h:34
Instances of this class represent a uniqued identifier for a section in the current translation unit.
Definition MCSection.h:573
Streaming machine code generation interface.
Definition MCStreamer.h:222
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition MCSymbol.h:42
This class contains meta information specific to a module.
A Module instance is used to store all the information related to an LLVM module.
Definition Module.h:67
This implementation is used for RISC-V ELF targets.
MCSection * getSectionForConstant(const DataLayout &DL, SectionKind Kind, const Constant *C, Align &Alignment, const Function *F) const override
Given a constant with the SectionKind, return a section that it should be placed in.
bool isGlobalInSmallSection(const GlobalObject *GO, const TargetMachine &TM) const
Return true if this global address should be placed into small data/bss section.
MCSection * SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const override
void getModuleMetadata(Module &M) override
Get the module-level metadata that the platform cares about.
bool isInSmallSection(uint64_t Size) const
void Initialize(MCContext &Ctx, const TargetMachine &TM) override
This method must be called before any actual lowering is done.
unsigned getTextSectionAlignment() const override
bool isConstantInSmallSection(const DataLayout &DL, const Constant *CN) const
Return true if this constant should be placed into small data section.
const MCExpr * getIndirectSymViaGOTPCRel(const GlobalValue *GV, const MCSymbol *Sym, const MCValue &MV, int64_t Offset, MachineModuleInfo *MMI, MCStreamer &Streamer) const override
Get the target specific PC relative GOT entry relocation.
void getNameWithPrefix(SmallVectorImpl< char > &OutName, const GlobalValue *GV, const TargetMachine &TM) const override
SectionKind - This is a simple POD value that classifies the properties of a section.
Definition SectionKind.h:22
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Primary interface to the complete machine description for the target machine.
This is an optimization pass for GlobalISel generic memory operations.
@ Offset
Definition DWP.cpp:578
This struct is a compact representation of a valid (non-zero power of two) alignment.
Definition Alignment.h:39