]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - opencl/llvm.git/blob - lib/Target/NVPTX/NVPTXTargetObjectFile.h
2a7281e00d3950214fdc85f6eb1cd9579d3c41e1
[opencl/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 //===----------------------------------------------------------------------===//
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