2a7281e00d3950214fdc85f6eb1cd9579d3c41e1
1 //===-- NVPTXTargetObjectFile.h - NVPTX Object Info -------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_TARGET_NVPTX_TARGETOBJECTFILE_H
11 #define LLVM_TARGET_NVPTX_TARGETOBJECTFILE_H
13 #include "NVPTXSection.h"
14 #include "llvm/Target/TargetLoweringObjectFile.h"
15 #include <string>
17 namespace llvm {
18 class GlobalVariable;
19 class Module;
21 class NVPTXTargetObjectFile : public TargetLoweringObjectFile {
23 public:
24 NVPTXTargetObjectFile() {
25 TextSection = 0;
26 DataSection = 0;
27 BSSSection = 0;
28 ReadOnlySection = 0;
30 StaticCtorSection = 0;
31 StaticDtorSection = 0;
32 LSDASection = 0;
33 EHFrameSection = 0;
34 DwarfAbbrevSection = 0;
35 DwarfInfoSection = 0;
36 DwarfLineSection = 0;
37 DwarfFrameSection = 0;
38 DwarfPubTypesSection = 0;
39 DwarfDebugInlineSection = 0;
40 DwarfStrSection = 0;
41 DwarfLocSection = 0;
42 DwarfARangesSection = 0;
43 DwarfRangesSection = 0;
44 DwarfMacroInfoSection = 0;
45 }
47 virtual ~NVPTXTargetObjectFile();
49 void Initialize(MCContext &ctx, const TargetMachine &TM) override {
50 TargetLoweringObjectFile::Initialize(ctx, TM);
51 TextSection = new NVPTXSection(MCSection::SV_ELF, SectionKind::getText());
52 DataSection =
53 new NVPTXSection(MCSection::SV_ELF, SectionKind::getDataRel());
54 BSSSection = new NVPTXSection(MCSection::SV_ELF, SectionKind::getBSS());
55 ReadOnlySection =
56 new NVPTXSection(MCSection::SV_ELF, SectionKind::getReadOnly());
58 StaticCtorSection =
59 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
60 StaticDtorSection =
61 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
62 LSDASection =
63 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
64 EHFrameSection =
65 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
66 DwarfAbbrevSection =
67 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
68 DwarfInfoSection =
69 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
70 DwarfLineSection =
71 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
72 DwarfFrameSection =
73 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
74 DwarfPubTypesSection =
75 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
76 DwarfDebugInlineSection =
77 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
78 DwarfStrSection =
79 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
80 DwarfLocSection =
81 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
82 DwarfARangesSection =
83 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
84 DwarfRangesSection =
85 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
86 DwarfMacroInfoSection =
87 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
88 }
90 const MCSection *getSectionForConstant(SectionKind Kind) const override {
91 return ReadOnlySection;
92 }
94 const MCSection *getExplicitSectionGlobal(const GlobalValue *GV,
95 SectionKind Kind, Mangler &Mang,
96 const TargetMachine &TM) const override {
97 return DataSection;
98 }
100 };
102 } // end namespace llvm
104 #endif