[PATCH] D156953: PowerPC 32bit: Emit relocation type R_PPC_DTPREL32 for tls variablels.
Varun Kumar E via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 4 07:04:59 PDT 2023
varunkumare99 updated this revision to Diff 547197.
varunkumare99 added a reviewer: nemanjai.
varunkumare99 added a comment.
reduced the testcase.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D156953/new/
https://reviews.llvm.org/D156953
Files:
llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
llvm/test/MC/PowerPC/ppc32-R_PPC_DTPREL32-reloc.s
Index: llvm/test/MC/PowerPC/ppc32-R_PPC_DTPREL32-reloc.s
===================================================================
--- /dev/null
+++ llvm/test/MC/PowerPC/ppc32-R_PPC_DTPREL32-reloc.s
@@ -0,0 +1,72 @@
+# RUN: llvm-mc -filetype=obj -triple=ppc %s -o %t
+# RUN: llvm-readelf -r %t | FileCheck %s
+
+# CHECK: Relocation section '.rela.debug_info' at offset 0x118 contains 1 entries:
+# CHECK-NEXT: Offset Info Type Sym. Value Symbol's Name + Addend
+# CHECK-NEXT:00000013 0000024e R_PPC_DTPREL32 00000000 tls_rtp_var + 8000
+
+ .text
+ .globl foo # -- Begin function foo
+ .p2align 2
+ .type foo, at function
+foo: # @foo
+# %bb.0: # %entry
+ stwu 1, -16(1)
+ stw 31, 12(1)
+ mr 31, 1
+ addis 3, 2, tls_rtp_var at tprel@ha
+ addi 4, 3, tls_rtp_var at tprel@l
+ lwz 3, 0(4)
+ addi 3, 3, 1
+ stw 3, 0(4)
+ lis 4, my_global_var at ha
+ lwz 3, my_global_var at l(4)
+ addi 3, 3, 1
+ stw 3, my_global_var at l(4)
+ lwz 31, 12(1)
+ addi 1, 1, 16
+ blr
+
+ .type tls_rtp_var, at object # @tls_rtp_var
+ .section .tdata,"awT", at progbits
+ .globl tls_rtp_var
+ .p2align 2, 0x0
+tls_rtp_var:
+ .long 5 # 0x5
+ .size tls_rtp_var, 4
+
+ .type my_global_var, at object # @my_global_var
+ .data
+ .globl my_global_var
+ .p2align 2, 0x0
+my_global_var:
+ .long 7 # 0x7
+ .size my_global_var, 4
+
+ .section .debug_info,"", at progbits
+.Lcu_begin0:
+.Ldebug_info_start0:
+ .short 5 # DWARF version number
+ .byte 1 # DWARF Unit Type
+ .byte 4 # Address Size (in bytes)
+ .byte 0 # DW_AT_producer
+ .short 29 # DW_AT_language
+ .byte 1 # DW_AT_name
+ .byte 2 # DW_AT_comp_dir
+ .byte 1 # DW_AT_low_pc
+ .byte 3 # DW_AT_name
+ .long 50 # DW_AT_type
+ # DW_AT_external
+ .byte 0 # DW_AT_decl_file
+ .byte 1 # DW_AT_decl_line
+ .byte 6 # DW_AT_location
+ .byte 12
+ .long tls_rtp_var at DTPREL+32768
+ .byte 224
+ .byte 4 # DW_AT_name
+ .byte 5 # DW_AT_encoding
+ .byte 4 # DW_AT_byte_size
+ .byte 5 # DW_AT_name
+ .long 50 # DW_AT_type
+ .byte 0 # End Of Children Mark
+.Ldebug_info_end0:
Index: llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
===================================================================
--- llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
+++ llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
@@ -456,7 +456,13 @@
}
break;
case FK_Data_4:
- Type = ELF::R_PPC_ADDR32;
+ switch (Modifier) {
+ case MCSymbolRefExpr::VK_DTPREL:
+ Type = ELF::R_PPC_DTPREL32;
+ break;
+ default:
+ Type = ELF::R_PPC_ADDR32;
+ }
break;
case FK_Data_2:
Type = ELF::R_PPC_ADDR16;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D156953.547197.patch
Type: text/x-patch
Size: 3372 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230804/c0789640/attachment.bin>
More information about the llvm-commits
mailing list