[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