From: Juan Manuel MARTINEZ CAAMAÑO Date: Fri, 10 Feb 2023 14:05:05 +0000 (+0100) Subject: [AMDGPU][MC] Generate relative relocations for allocatable (more particularly, eh_fra... X-Git-Tag: upstream/17.0.6~17934 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c4a250ecea14fda4920ddf035318b32b18bca5e5;p=platform%2Fupstream%2Fllvm.git [AMDGPU][MC] Generate relative relocations for allocatable (more particularly, eh_frame) sections Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D142453 --- diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp index 066b366..3f18847 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp @@ -74,9 +74,9 @@ unsigned AMDGPUELFObjectWriter::getRelocType(MCContext &Ctx, return ELF::R_AMDGPU_REL32; case FK_Data_4: case FK_SecRel_4: - return ELF::R_AMDGPU_ABS32; + return IsPCRel ? ELF::R_AMDGPU_REL32 : ELF::R_AMDGPU_ABS32; case FK_Data_8: - return ELF::R_AMDGPU_ABS64; + return IsPCRel ? ELF::R_AMDGPU_REL64 : ELF::R_AMDGPU_ABS64; } if (Fixup.getTargetKind() == AMDGPU::fixup_si_sopp_br) { diff --git a/llvm/test/MC/AMDGPU/cfi_reloc.s b/llvm/test/MC/AMDGPU/cfi_reloc.s new file mode 100644 index 0000000..add81a8 --- /dev/null +++ b/llvm/test/MC/AMDGPU/cfi_reloc.s @@ -0,0 +1,16 @@ +// RUN: llvm-mc -filetype=obj -triple amdgcn-- -mcpu=kaveri -show-encoding %s | llvm-readobj -r - | FileCheck %s + +// CHECK: Relocations [ +// CHECK: .rel.eh_frame { +// CHECK: R_AMDGPU_REL32 .text +// CHECK: } +// CHECK: .rel.debug_frame { +// CHECK: R_AMDGPU_ABS64 .text +// CHECK: } +// CHECK: ] + +kernel: + .cfi_startproc + .cfi_sections .debug_frame, .eh_frame + s_endpgm + .cfi_endproc \ No newline at end of file