blob: bfd6ab12f49eb42a27ab07df9e74789e86f57748 [file] [log] [blame]
Justin Holewinskiae556d32012-05-04 20:18:50 +00001//===-- 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//===----------------------------------------------------------------------===//
9
10#ifndef LLVM_TARGET_NVPTX_TARGETOBJECTFILE_H
11#define LLVM_TARGET_NVPTX_TARGETOBJECTFILE_H
12
13#include "NVPTXSection.h"
14#include "llvm/Target/TargetLoweringObjectFile.h"
15#include <string>
16
17namespace llvm {
18class GlobalVariable;
19class Module;
20
21class NVPTXTargetObjectFile : public TargetLoweringObjectFile {
22
23public:
NAKAMURA Takumif7f58942013-06-24 13:19:41 +000024 NVPTXTargetObjectFile() {
25 TextSection = 0;
26 DataSection = 0;
27 BSSSection = 0;
28 ReadOnlySection = 0;
29
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 }
46
Justin Holewinskiae556d32012-05-04 20:18:50 +000047 ~NVPTXTargetObjectFile() {
48 delete TextSection;
49 delete DataSection;
50 delete BSSSection;
51 delete ReadOnlySection;
52
53 delete StaticCtorSection;
54 delete StaticDtorSection;
55 delete LSDASection;
56 delete EHFrameSection;
57 delete DwarfAbbrevSection;
58 delete DwarfInfoSection;
59 delete DwarfLineSection;
60 delete DwarfFrameSection;
61 delete DwarfPubTypesSection;
62 delete DwarfDebugInlineSection;
63 delete DwarfStrSection;
64 delete DwarfLocSection;
65 delete DwarfARangesSection;
66 delete DwarfRangesSection;
67 delete DwarfMacroInfoSection;
Eric Christopherd666bb02012-05-08 20:45:04 +000068 }
Justin Holewinskiae556d32012-05-04 20:18:50 +000069
70 virtual void Initialize(MCContext &ctx, const TargetMachine &TM) {
Justin Holewinski0497ab12013-03-30 14:29:21 +000071 TextSection = new NVPTXSection(MCSection::SV_ELF, SectionKind::getText());
72 DataSection =
73 new NVPTXSection(MCSection::SV_ELF, SectionKind::getDataRel());
74 BSSSection = new NVPTXSection(MCSection::SV_ELF, SectionKind::getBSS());
75 ReadOnlySection =
76 new NVPTXSection(MCSection::SV_ELF, SectionKind::getReadOnly());
Justin Holewinskiae556d32012-05-04 20:18:50 +000077
Justin Holewinski0497ab12013-03-30 14:29:21 +000078 StaticCtorSection =
79 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
80 StaticDtorSection =
81 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
82 LSDASection =
83 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
84 EHFrameSection =
85 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
86 DwarfAbbrevSection =
87 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
88 DwarfInfoSection =
89 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
90 DwarfLineSection =
91 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
92 DwarfFrameSection =
93 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
94 DwarfPubTypesSection =
95 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
96 DwarfDebugInlineSection =
97 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
98 DwarfStrSection =
99 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
100 DwarfLocSection =
101 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
102 DwarfARangesSection =
103 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
104 DwarfRangesSection =
105 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
106 DwarfMacroInfoSection =
107 new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
Eric Christopherd666bb02012-05-08 20:45:04 +0000108 }
Justin Holewinskiae556d32012-05-04 20:18:50 +0000109
110 virtual const MCSection *getSectionForConstant(SectionKind Kind) const {
111 return ReadOnlySection;
Eric Christopherd666bb02012-05-08 20:45:04 +0000112 }
Justin Holewinskiae556d32012-05-04 20:18:50 +0000113
114 virtual const MCSection *
115 getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
Justin Holewinski0497ab12013-03-30 14:29:21 +0000116 Mangler *Mang, const TargetMachine &TM) const {
Justin Holewinskiae556d32012-05-04 20:18:50 +0000117 return DataSection;
Eric Christopherd666bb02012-05-08 20:45:04 +0000118 }
Justin Holewinskiae556d32012-05-04 20:18:50 +0000119
120};
121
122} // end namespace llvm
123
124#endif