[PATCH] D79015: [PowerPC] Fix missing GOT indirect variant kind

Stefan Pintilie via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 28 09:06:46 PDT 2020


stefanp created this revision.
stefanp added reviewers: nemanjai, lei, PowerPC, hfinkel.
Herald added subscribers: shchenz, hiraditya.
Herald added a project: LLVM.

The function `MCSymbolRefExpr::getVariantKindForName` was missing the entry for `VK_PPC_GOT_PCREL`.
This patch adds the missing entry.


https://reviews.llvm.org/D79015

Files:
  llvm/lib/MC/MCExpr.cpp
  llvm/test/MC/PowerPC/future-reloc.s


Index: llvm/test/MC/PowerPC/future-reloc.s
===================================================================
--- /dev/null
+++ llvm/test/MC/PowerPC/future-reloc.s
@@ -0,0 +1,50 @@
+# RUN: llvm-mc -triple=powerpc64le-unknown-unknown -filetype=obj %s 2>&1 | \
+# RUN: FileCheck %s -check-prefix=MC
+# RUN: llvm-mc -triple=powerpc64le-unknown-unknown -filetype=obj %s | \
+# RUN: llvm-readobj -r | FileCheck %s -check-prefix=READOBJ
+
+# MC-NOT:    error: invalid variant
+
+# READOBJ:        0x0 R_PPC64_PCREL34 locvalue 0x0
+# READOBJ-NEXT:   0x20 R_PPC64_GOT_PCREL34 evalue 0x0
+
+	.text
+	.abiversion 2
+	.globl	local                   # -- Begin function local
+	.p2align	4
+	.type	local, at function
+local:                                  # @local
+.Llocal$local:
+.Lfunc_begin0:
+# %bb.0:                                # %entry
+	plwa 3, locvalue at PCREL(0), 1
+	blr
+	.long	0
+	.quad	0
+.Lfunc_end0:
+	.size	local, .Lfunc_end0-.Lfunc_begin0
+                                        # -- End function
+	.globl	external                # -- Begin function external
+	.p2align	4
+	.type	external, at function
+external:                               # @external
+.Lexternal$local:
+.Lfunc_begin1:
+# %bb.0:                                # %entry
+	pld 3, evalue at got@pcrel(0), 1
+	lwa 3, 0(3)
+	blr
+	.long	0
+	.quad	0
+.Lfunc_end1:
+	.size	external, .Lfunc_end1-.Lfunc_begin1
+                                        # -- End function
+	.type	locvalue, at object        # @locvalue
+	.section	.bss,"aw", at nobits
+	.globl	locvalue
+	.p2align	2
+locvalue:
+.Llocvalue$local:
+	.long	0                       # 0x0
+	.size	locvalue, 4
+
Index: llvm/lib/MC/MCExpr.cpp
===================================================================
--- llvm/lib/MC/MCExpr.cpp
+++ llvm/lib/MC/MCExpr.cpp
@@ -435,6 +435,7 @@
     .Case("got at tlsld@l", VK_PPC_GOT_TLSLD_LO)
     .Case("got at tlsld@h", VK_PPC_GOT_TLSLD_HI)
     .Case("got at tlsld@ha", VK_PPC_GOT_TLSLD_HA)
+    .Case("got at pcrel", VK_PPC_GOT_PCREL)
     .Case("notoc", VK_PPC_NOTOC)
     .Case("gdgot", VK_Hexagon_GD_GOT)
     .Case("gdplt", VK_Hexagon_GD_PLT)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79015.260656.patch
Type: text/x-patch
Size: 2096 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200428/44b57ecc/attachment-0001.bin>


More information about the llvm-commits mailing list