[lld] r323843 - [LLD] Use Rela on PowerPC too

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 30 18:03:55 PST 2018


Author: ruiu
Date: Tue Jan 30 18:03:55 2018
New Revision: 323843

URL: http://llvm.org/viewvc/llvm-project?rev=323843&view=rev
Log:
[LLD] Use Rela on PowerPC too

Patch by Nicholas Allegra.

The spec for ELF on PowerPC:
http://refspecs.linux-foundation.org/elf/elfspec_ppc.pdf
says:
"The PowerPC family uses only the Elf32_Rela relocation entries with
explicit addends."

(EM_PPC64 should be covered by Config->Is64 already.)

Differential Revision: https://reviews.llvm.org/D40826

Added:
    lld/trunk/test/ELF/ppc-rela.s
Modified:
    lld/trunk/ELF/Driver.cpp

Modified: lld/trunk/ELF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=323843&r1=323842&r2=323843&view=diff
==============================================================================
--- lld/trunk/ELF/Driver.cpp (original)
+++ lld/trunk/ELF/Driver.cpp Tue Jan 30 18:03:55 2018
@@ -806,7 +806,8 @@ static void setConfigs() {
   Config->Endianness =
       Config->IsLE ? support::endianness::little : support::endianness::big;
   Config->IsMips64EL = (Kind == ELF64LEKind && Machine == EM_MIPS);
-  Config->IsRela = Config->Is64 || IsX32 || Config->MipsN32Abi;
+  Config->IsRela =
+      Config->Is64 || IsX32 || Config->MipsN32Abi || Machine == EM_PPC;
   Config->Pic = Config->Pie || Config->Shared;
   Config->Wordsize = Config->Is64 ? 8 : 4;
 }

Added: lld/trunk/test/ELF/ppc-rela.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/ppc-rela.s?rev=323843&view=auto
==============================================================================
--- lld/trunk/test/ELF/ppc-rela.s (added)
+++ lld/trunk/test/ELF/ppc-rela.s Tue Jan 30 18:03:55 2018
@@ -0,0 +1,11 @@
+# REQUIRES: ppc
+# RUN: llvm-mc -filetype=obj -triple=powerpc-unknown-freebsd %s -o %t
+# RUN: ld.lld %t -o %t2 -shared
+# RUN: llvm-readobj -r %t2 | FileCheck %s
+
+.data
+  .long foo
+
+// CHECK:      Section ({{.*}}) .rela.dyn {
+// CHECK-NEXT:   0x1000 R_PPC_ADDR32 foo 0x0
+// CHECK-NEXT: }




More information about the llvm-commits mailing list