blob: b5698a2fc08ff2f39a3e5e64e5d3432c20e58456 [file] [log] [blame]
Justin Holewinski49683f32012-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:
Eric Christopher22b291a2012-05-08 20:45:04 +000024 NVPTXTargetObjectFile() {}
Justin Holewinski49683f32012-05-04 20:18:50 +000025 ~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;
Eric Christopher22b291a2012-05-08 20:45:04 +000046 }
Justin Holewinski49683f32012-05-04 20:18:50 +000047
48 virtual void Initialize(MCContext &ctx, const TargetMachine &TM) {
49 TextSection = new NVPTXSection(MCSection::SV_ELF,
50 SectionKind::getText());
51 DataSection = new NVPTXSection(MCSection::SV_ELF,
52 SectionKind::getDataRel());
53 BSSSection = new NVPTXSection(MCSection::SV_ELF,
54 SectionKind::getBSS());
55 ReadOnlySection = new NVPTXSection(MCSection::SV_ELF,
56 SectionKind::getReadOnly());
57
58 StaticCtorSection = new NVPTXSection(MCSection::SV_ELF,
59 SectionKind::getMetadata());
60 StaticDtorSection = new NVPTXSection(MCSection::SV_ELF,
61 SectionKind::getMetadata());
62 LSDASection = new NVPTXSection(MCSection::SV_ELF,
63 SectionKind::getMetadata());
64 EHFrameSection = new NVPTXSection(MCSection::SV_ELF,
65 SectionKind::getMetadata());
66 DwarfAbbrevSection = new NVPTXSection(MCSection::SV_ELF,
67 SectionKind::getMetadata());
68 DwarfInfoSection = new NVPTXSection(MCSection::SV_ELF,
69 SectionKind::getMetadata());
70 DwarfLineSection = new NVPTXSection(MCSection::SV_ELF,
71 SectionKind::getMetadata());
72 DwarfFrameSection = new NVPTXSection(MCSection::SV_ELF,
73 SectionKind::getMetadata());
74 DwarfPubTypesSection = new NVPTXSection(MCSection::SV_ELF,
75 SectionKind::getMetadata());
76 DwarfDebugInlineSection = new NVPTXSection(MCSection::SV_ELF,
77 SectionKind::getMetadata());
78 DwarfStrSection = new NVPTXSection(MCSection::SV_ELF,
79 SectionKind::getMetadata());
80 DwarfLocSection = new NVPTXSection(MCSection::SV_ELF,
81 SectionKind::getMetadata());
82 DwarfARangesSection = new NVPTXSection(MCSection::SV_ELF,
83 SectionKind::getMetadata());
84 DwarfRangesSection = new NVPTXSection(MCSection::SV_ELF,
85 SectionKind::getMetadata());
86 DwarfMacroInfoSection = new NVPTXSection(MCSection::SV_ELF,
87 SectionKind::getMetadata());
Eric Christopher22b291a2012-05-08 20:45:04 +000088 }
Justin Holewinski49683f32012-05-04 20:18:50 +000089
90 virtual const MCSection *getSectionForConstant(SectionKind Kind) const {
91 return ReadOnlySection;
Eric Christopher22b291a2012-05-08 20:45:04 +000092 }
Justin Holewinski49683f32012-05-04 20:18:50 +000093
94 virtual const MCSection *
95 getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
96 Mangler *Mang,
97 const TargetMachine &TM) const {
98 return DataSection;
Eric Christopher22b291a2012-05-08 20:45:04 +000099 }
Justin Holewinski49683f32012-05-04 20:18:50 +0000100
101};
102
103} // end namespace llvm
104
105#endif