Skip to content

Commit c4a250e

Browse files
committed
[AMDGPU][MC] Generate relative relocations for allocatable (more particularly, eh_frame) sections
Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D142453
1 parent f1837c7 commit c4a250e

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ unsigned AMDGPUELFObjectWriter::getRelocType(MCContext &Ctx,
7474
return ELF::R_AMDGPU_REL32;
7575
case FK_Data_4:
7676
case FK_SecRel_4:
77-
return ELF::R_AMDGPU_ABS32;
77+
return IsPCRel ? ELF::R_AMDGPU_REL32 : ELF::R_AMDGPU_ABS32;
7878
case FK_Data_8:
79-
return ELF::R_AMDGPU_ABS64;
79+
return IsPCRel ? ELF::R_AMDGPU_REL64 : ELF::R_AMDGPU_ABS64;
8080
}
8181

8282
if (Fixup.getTargetKind() == AMDGPU::fixup_si_sopp_br) {

llvm/test/MC/AMDGPU/cfi_reloc.s

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// RUN: llvm-mc -filetype=obj -triple amdgcn-- -mcpu=kaveri -show-encoding %s | llvm-readobj -r - | FileCheck %s
2+
3+
// CHECK: Relocations [
4+
// CHECK: .rel.eh_frame {
5+
// CHECK: R_AMDGPU_REL32 .text
6+
// CHECK: }
7+
// CHECK: .rel.debug_frame {
8+
// CHECK: R_AMDGPU_ABS64 .text
9+
// CHECK: }
10+
// CHECK: ]
11+
12+
kernel:
13+
.cfi_startproc
14+
.cfi_sections .debug_frame, .eh_frame
15+
s_endpgm
16+
.cfi_endproc

0 commit comments

Comments
 (0)