21 AMDGPUELFObjectWriter(
bool Is64Bit, uint8_t OSABI,
bool HasRelocationAddend,
26 const MCFixup &Fixup,
bool IsPCRel)
const override;
32 AMDGPUELFObjectWriter::AMDGPUELFObjectWriter(
bool Is64Bit,
34 bool HasRelocationAddend,
37 HasRelocationAddend, ABIVersion) {}
39 unsigned AMDGPUELFObjectWriter::getRelocType(
MCContext &Ctx,
43 if (
const auto *SymA =
Target.getSymA()) {
46 if (SymA->getSymbol().getName() ==
"SCRATCH_RSRC_DWORD0" ||
47 SymA->getSymbol().getName() ==
"SCRATCH_RSRC_DWORD1")
48 return ELF::R_AMDGPU_ABS32_LO;
51 switch (
Target.getAccessVariant()) {
54 case MCSymbolRefExpr::VK_GOTPCREL:
55 return ELF::R_AMDGPU_GOTPCREL;
56 case MCSymbolRefExpr::VK_AMDGPU_GOTPCREL32_LO:
57 return ELF::R_AMDGPU_GOTPCREL32_LO;
58 case MCSymbolRefExpr::VK_AMDGPU_GOTPCREL32_HI:
59 return ELF::R_AMDGPU_GOTPCREL32_HI;
60 case MCSymbolRefExpr::VK_AMDGPU_REL32_LO:
61 return ELF::R_AMDGPU_REL32_LO;
62 case MCSymbolRefExpr::VK_AMDGPU_REL32_HI:
63 return ELF::R_AMDGPU_REL32_HI;
64 case MCSymbolRefExpr::VK_AMDGPU_REL64:
65 return ELF::R_AMDGPU_REL64;
68 switch (
Fixup.getKind()) {
71 return ELF::R_AMDGPU_REL32;
74 return ELF::R_AMDGPU_ABS32;
76 return ELF::R_AMDGPU_ABS64;
80 const auto *SymA =
Target.getSymA();
83 if (SymA->getSymbol().isUndefined()) {
85 SymA->getSymbol().getName() +
"'");
86 return ELF::R_AMDGPU_NONE;
88 return ELF::R_AMDGPU_REL16;
94 std::unique_ptr<MCObjectTargetWriter>
96 bool HasRelocationAddend,
98 return std::make_unique<AMDGPUELFObjectWriter>(Is64Bit, OSABI,