Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Sep 2019 12:23:57 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r352009 - projects/clang900-import/contrib/llvm/lib/Target/PowerPC
Message-ID:  <201909071223.x87CNvkk074174@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sat Sep  7 12:23:57 2019
New Revision: 352009
URL: https://svnweb.freebsd.org/changeset/base/352009

Log:
  Pull in r370426 from upstream llvm trunk (by Fāng-ruì Sòng):
  
    [PPC32] Emit R_PPC_GOT_TPREL16 instead R_PPC_GOT_TPREL16_LO
  
    Unlike ppc64, which has ADDISgotTprelHA+LDgotTprelL pairs, ppc32 just
    uses LDgotTprelL32, so it does not make lots of sense to use _LO
    without a paired _HA.
  
    Emit R_PPC_GOT_TPREL16 instead R_PPC_GOT_TPREL16_LO to match GCC, and
    get better linker relocation check. Note, R_PPC_GOT_TPREL16_{HA,LO}
    don't have good linker support:
  
    (a) lld does not support R_PPC_GOT_TPREL16_{HA,LO}.
    (b) Top of tree ld.bfd does not support R_PPC_GOT_REL16_HA
        Initial-Exec -> Local-Exec relaxation:
  
      // a.o
      addis 3, 3, tsd_tls@got@tprel@ha
      lwz 3, tsd_tls@got@tprel@l(3)
      add 3, 3, tsd_tls@tls
      // b.o
      .section .tdata,"awT"; .globl tsd_tls; tsd_tls:
  
      // ld/ld-new a.o b.o
      internal error, aborting at ../../bfd/elf32-ppc.c:7952 in
      ppc_elf_relocate_section
  
    Reviewed By: adalava
  
    Differential Revision: https://reviews.llvm.org/D66925
  
  This allows use of LLD for linking 32-bit static binaries on
  FreeBSD/powerpc.
  
  Submitted by:	Alfredo Dal'Ava Júnior <alfredo.junior@eldorado.org.br>

Modified:
  projects/clang900-import/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp

Modified: projects/clang900-import/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp	Sat Sep  7 12:20:47 2019	(r352008)
+++ projects/clang900-import/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp	Sat Sep  7 12:23:57 2019	(r352009)
@@ -866,8 +866,10 @@ void PPCAsmPrinter::EmitInstruction(const MachineInstr
     const GlobalValue *GValue = MO.getGlobal();
     MCSymbol *MOSymbol = getSymbol(GValue);
     const MCExpr *Exp =
-      MCSymbolRefExpr::create(MOSymbol, MCSymbolRefExpr::VK_PPC_GOT_TPREL_LO,
-                              OutContext);
+        MCSymbolRefExpr::create(MOSymbol,
+                                isPPC64 ? MCSymbolRefExpr::VK_PPC_GOT_TPREL_LO
+                                        : MCSymbolRefExpr::VK_PPC_GOT_TPREL,
+                                OutContext);
     TmpInst.getOperand(1) = MCOperand::createExpr(Exp);
     EmitToStreamer(*OutStreamer, TmpInst);
     return;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201909071223.x87CNvkk074174>