[NVPTX] Run clang-format on all NVPTX sources.
[oota-llvm.git] / lib / Target / NVPTX / NVPTXTargetObjectFile.h
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 //===----------------------------------------------------------------------===//
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
17 namespace llvm {
18 class GlobalVariable;
19 class Module;
20
21 class NVPTXTargetObjectFile : public TargetLoweringObjectFile {
22
23 public:
24   NVPTXTargetObjectFile() {}
25   ~NVPTXTargetObjectFile() {
26     delete TextSection;
27     delete DataSection;
28     delete BSSSection;
29     delete ReadOnlySection;
30
31     delete StaticCtorSection;
32     delete StaticDtorSection;
33     delete LSDASection;
34     delete EHFrameSection;
35     delete DwarfAbbrevSection;
36     delete DwarfInfoSection;
37     delete DwarfLineSection;
38     delete DwarfFrameSection;
39     delete DwarfPubTypesSection;
40     delete DwarfDebugInlineSection;
41     delete DwarfStrSection;
42     delete DwarfLocSection;
43     delete DwarfARangesSection;
44     delete DwarfRangesSection;
45     delete DwarfMacroInfoSection;
46   }
47
48   virtual void Initialize(MCContext &ctx, const TargetMachine &TM) {
49     TextSection = new NVPTXSection(MCSection::SV_ELF, SectionKind::getText());
50     DataSection =
51         new NVPTXSection(MCSection::SV_ELF, SectionKind::getDataRel());
52     BSSSection = new NVPTXSection(MCSection::SV_ELF, SectionKind::getBSS());
53     ReadOnlySection =
54         new NVPTXSection(MCSection::SV_ELF, SectionKind::getReadOnly());
55
56     StaticCtorSection =
57         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
58     StaticDtorSection =
59         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
60     LSDASection =
61         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
62     EHFrameSection =
63         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
64     DwarfAbbrevSection =
65         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
66     DwarfInfoSection =
67         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
68     DwarfLineSection =
69         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
70     DwarfFrameSection =
71         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
72     DwarfPubTypesSection =
73         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
74     DwarfDebugInlineSection =
75         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
76     DwarfStrSection =
77         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
78     DwarfLocSection =
79         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
80     DwarfARangesSection =
81         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
82     DwarfRangesSection =
83         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
84     DwarfMacroInfoSection =
85         new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata());
86   }
87
88   virtual const MCSection *getSectionForConstant(SectionKind Kind) const {
89     return ReadOnlySection;
90   }
91
92   virtual const MCSection *
93   getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
94                            Mangler *Mang, const TargetMachine &TM) const {
95     return DataSection;
96   }
97
98 };
99
100 } // end namespace llvm
101
102 #endif