1*10e730a2SDan Gohman //===-- WebAssemblyTargetObjectFile.h - WebAssembly Object Info -*- C++ -*-===//
2*10e730a2SDan Gohman //
3*10e730a2SDan Gohman //                     The LLVM Compiler Infrastructure
4*10e730a2SDan Gohman //
5*10e730a2SDan Gohman // This file is distributed under the University of Illinois Open Source
6*10e730a2SDan Gohman // License. See LICENSE.TXT for details.
7*10e730a2SDan Gohman //
8*10e730a2SDan Gohman //===----------------------------------------------------------------------===//
9*10e730a2SDan Gohman ///
10*10e730a2SDan Gohman /// \file
11*10e730a2SDan Gohman /// \brief This file declares the WebAssembly-specific subclass of
12*10e730a2SDan Gohman /// TargetLoweringObjectFile.
13*10e730a2SDan Gohman ///
14*10e730a2SDan Gohman //===----------------------------------------------------------------------===//
15*10e730a2SDan Gohman 
16*10e730a2SDan Gohman #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYTARGETOBJECTFILE_H
17*10e730a2SDan Gohman #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYTARGETOBJECTFILE_H
18*10e730a2SDan Gohman 
19*10e730a2SDan Gohman #include "llvm/Target/TargetLoweringObjectFile.h"
20*10e730a2SDan Gohman 
21*10e730a2SDan Gohman namespace llvm {
22*10e730a2SDan Gohman 
23*10e730a2SDan Gohman class GlobalVariable;
24*10e730a2SDan Gohman 
25*10e730a2SDan Gohman class WebAssemblyTargetObjectFile final : public TargetLoweringObjectFile {
26*10e730a2SDan Gohman public:
27*10e730a2SDan Gohman   WebAssemblyTargetObjectFile() {
28*10e730a2SDan Gohman     TextSection = nullptr;
29*10e730a2SDan Gohman     DataSection = nullptr;
30*10e730a2SDan Gohman     BSSSection = nullptr;
31*10e730a2SDan Gohman     ReadOnlySection = nullptr;
32*10e730a2SDan Gohman 
33*10e730a2SDan Gohman     StaticCtorSection = nullptr;
34*10e730a2SDan Gohman     StaticDtorSection = nullptr;
35*10e730a2SDan Gohman     LSDASection = nullptr;
36*10e730a2SDan Gohman     EHFrameSection = nullptr;
37*10e730a2SDan Gohman     DwarfAbbrevSection = nullptr;
38*10e730a2SDan Gohman     DwarfInfoSection = nullptr;
39*10e730a2SDan Gohman     DwarfLineSection = nullptr;
40*10e730a2SDan Gohman     DwarfFrameSection = nullptr;
41*10e730a2SDan Gohman     DwarfPubTypesSection = nullptr;
42*10e730a2SDan Gohman     DwarfDebugInlineSection = nullptr;
43*10e730a2SDan Gohman     DwarfStrSection = nullptr;
44*10e730a2SDan Gohman     DwarfLocSection = nullptr;
45*10e730a2SDan Gohman     DwarfARangesSection = nullptr;
46*10e730a2SDan Gohman     DwarfRangesSection = nullptr;
47*10e730a2SDan Gohman   }
48*10e730a2SDan Gohman 
49*10e730a2SDan Gohman   MCSection *getSectionForConstant(SectionKind Kind,
50*10e730a2SDan Gohman                                    const Constant *C) const override {
51*10e730a2SDan Gohman     return ReadOnlySection;
52*10e730a2SDan Gohman   }
53*10e730a2SDan Gohman 
54*10e730a2SDan Gohman   MCSection *getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
55*10e730a2SDan Gohman                                       Mangler &Mang,
56*10e730a2SDan Gohman                                       const TargetMachine &TM) const override {
57*10e730a2SDan Gohman     return DataSection;
58*10e730a2SDan Gohman   }
59*10e730a2SDan Gohman 
60*10e730a2SDan Gohman   MCSection *SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
61*10e730a2SDan Gohman                                     Mangler &Mang,
62*10e730a2SDan Gohman                                     const TargetMachine &TM) const override;
63*10e730a2SDan Gohman };
64*10e730a2SDan Gohman 
65*10e730a2SDan Gohman } // end namespace llvm
66*10e730a2SDan Gohman 
67*10e730a2SDan Gohman #endif
68