149683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski//===-- NVPTXTargetObjectFile.h - NVPTX Object Info -------------*- C++ -*-===// 249683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// 349683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// The LLVM Compiler Infrastructure 449683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// 549683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// This file is distributed under the University of Illinois Open Source 649683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// License. See LICENSE.TXT for details. 749683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// 849683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski//===----------------------------------------------------------------------===// 949683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 1049683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#ifndef LLVM_TARGET_NVPTX_TARGETOBJECTFILE_H 1149683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#define LLVM_TARGET_NVPTX_TARGETOBJECTFILE_H 1249683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 1349683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#include "NVPTXSection.h" 1449683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#include "llvm/Target/TargetLoweringObjectFile.h" 1549683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#include <string> 1649683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 1749683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinskinamespace llvm { 1849683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinskiclass GlobalVariable; 1949683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinskiclass Module; 2049683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 2149683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinskiclass NVPTXTargetObjectFile : public TargetLoweringObjectFile { 2249683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 2349683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinskipublic: 24f1505ff35bf76cb044c261b4cc97773d47658805NAKAMURA Takumi NVPTXTargetObjectFile() { 25dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines TextSection = nullptr; 26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DataSection = nullptr; 27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BSSSection = nullptr; 28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ReadOnlySection = nullptr; 29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines StaticCtorSection = nullptr; 31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines StaticDtorSection = nullptr; 32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines LSDASection = nullptr; 33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines EHFrameSection = nullptr; 34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfAbbrevSection = nullptr; 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfInfoSection = nullptr; 36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfLineSection = nullptr; 37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfFrameSection = nullptr; 38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfPubTypesSection = nullptr; 39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfDebugInlineSection = nullptr; 40dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfStrSection = nullptr; 41dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfLocSection = nullptr; 42dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfARangesSection = nullptr; 43dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfRangesSection = nullptr; 44dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DwarfMacroInfoSection = nullptr; 45f1505ff35bf76cb044c261b4cc97773d47658805NAKAMURA Takumi } 46f1505ff35bf76cb044c261b4cc97773d47658805NAKAMURA Takumi 47354362524a72b3fa43a6c09380b7ae3b2380cbbaJuergen Ributzka virtual ~NVPTXTargetObjectFile(); 4849683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines void Initialize(MCContext &ctx, const TargetMachine &TM) override { 5093cf0939f95b3d580d9c05375a7c84164e1ba72eRafael Espindola TargetLoweringObjectFile::Initialize(ctx, TM); 513639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski TextSection = new NVPTXSection(MCSection::SV_ELF, SectionKind::getText()); 523639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DataSection = 533639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getDataRel()); 543639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski BSSSection = new NVPTXSection(MCSection::SV_ELF, SectionKind::getBSS()); 553639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski ReadOnlySection = 563639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getReadOnly()); 5749683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 583639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski StaticCtorSection = 593639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 603639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski StaticDtorSection = 613639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 623639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski LSDASection = 633639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 643639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski EHFrameSection = 653639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 663639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfAbbrevSection = 673639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 683639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfInfoSection = 693639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 703639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfLineSection = 713639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 723639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfFrameSection = 733639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 743639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfPubTypesSection = 753639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 763639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfDebugInlineSection = 773639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 783639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfStrSection = 793639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 803639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfLocSection = 813639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 823639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfARangesSection = 833639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 843639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfRangesSection = 853639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 863639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski DwarfMacroInfoSection = 873639ce2575660a0e6938d2e84e8bd9a738fd7051Justin Holewinski new NVPTXSection(MCSection::SV_ELF, SectionKind::getMetadata()); 8822b291abd855ccf013381a9d6939d918181b0e0eEric Christopher } 8949683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 9036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const MCSection *getSectionForConstant(SectionKind Kind) const override { 9149683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski return ReadOnlySection; 9222b291abd855ccf013381a9d6939d918181b0e0eEric Christopher } 9349683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 9436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const MCSection *getExplicitSectionGlobal(const GlobalValue *GV, 9536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines SectionKind Kind, Mangler &Mang, 9636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const TargetMachine &TM) const override { 9749683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski return DataSection; 9822b291abd855ccf013381a9d6939d918181b0e0eEric Christopher } 9949683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 10049683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski}; 10149683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 10249683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski} // end namespace llvm 10349683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 10449683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#endif 105