1292915Sdim//===-- AMDGPUHSATargetObjectFile.cpp - AMDGPU Object Files ---------------===//
2292915Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6292915Sdim//
7292915Sdim//===----------------------------------------------------------------------===//
8292915Sdim
9292915Sdim#include "AMDGPUTargetObjectFile.h"
10292915Sdim#include "AMDGPU.h"
11321369Sdim#include "AMDGPUTargetMachine.h"
12321369Sdim#include "Utils/AMDGPUBaseInfo.h"
13321369Sdim#include "llvm/BinaryFormat/ELF.h"
14292915Sdim#include "llvm/MC/MCContext.h"
15292915Sdim#include "llvm/MC/MCSectionELF.h"
16292915Sdim
17292915Sdimusing namespace llvm;
18292915Sdim
19292915Sdim//===----------------------------------------------------------------------===//
20292915Sdim// Generic Object File
21292915Sdim//===----------------------------------------------------------------------===//
22292915Sdim
23314564SdimMCSection *AMDGPUTargetObjectFile::SelectSectionForGlobal(
24314564Sdim    const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const {
25327952Sdim  if (Kind.isReadOnly() && AMDGPU::isReadOnlySegment(GO) &&
26314564Sdim      AMDGPU::shouldEmitConstantsToTextSection(TM.getTargetTriple()))
27292915Sdim    return TextSection;
28292915Sdim
29314564Sdim  return TargetLoweringObjectFileELF::SelectSectionForGlobal(GO, Kind, TM);
30292915Sdim}
31344779Sdim
32344779SdimMCSection *AMDGPUTargetObjectFile::getExplicitSectionGlobal(
33344779Sdim    const GlobalObject *GO, SectionKind SK, const TargetMachine &TM) const {
34344779Sdim  // Set metadata access for the explicit section
35344779Sdim  StringRef SectionName = GO->getSection();
36344779Sdim  if (SectionName.startswith(".AMDGPU.comment."))
37344779Sdim    SK = SectionKind::getMetadata();
38344779Sdim
39344779Sdim  return TargetLoweringObjectFileELF::getExplicitSectionGlobal(GO, SK, TM);
40344779Sdim}
41