<div dir="ltr">I'm curious what was the instruction the previous hex code encoded. Did it work with that wrong instruction?</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 13, 2015 at 2:47 PM, Hal Finkel via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: hfinkel<br>
Date: Tue Oct 13 16:47:34 2015<br>
New Revision: 250230<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=250230&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=250230&view=rev</a><br>
Log:<br>
[ELF2/PPC64] Fix the TOC save in the .plt stub<br>
<br>
The comment was right, but the encoding was wrong (and, it seems, I forgot a<br>
test case for the .plt stub).<br>
<br>
Modified:<br>
    lld/trunk/ELF/Target.cpp<br>
    lld/trunk/test/elf2/ppc64-toc-restore.s<br>
<br>
Modified: lld/trunk/ELF/Target.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=250230&r1=250229&r2=250230&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=250230&r1=250229&r2=250230&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Target.cpp (original)<br>
+++ lld/trunk/ELF/Target.cpp Tue Oct 13 16:47:34 2015<br>
@@ -271,7 +271,7 @@ void PPC64TargetInfo::writePltEntry(uint<br>
   // be a pointer to the function descriptor in the .opd section. Using<br>
   // this scheme is simpler, but requires an extra indirection per PLT dispatch.<br>
<br>
-  write32be(Buf,      0xf8410000);                   // std %r2, 40(%r1)<br>
+  write32be(Buf,      0xf8410028);                   // std %r2, 40(%r1)<br>
   write32be(Buf + 4,  0x3d620000 | applyPPCHa(Off)); // addis %r11, %r2, X@ha<br>
   write32be(Buf + 8,  0xe98b0000 | applyPPCLo(Off)); // ld %r12, X@l(%r11)<br>
   write32be(Buf + 12, 0xe96c0000);                   // ld %r11,0(%r12)<br>
<br>
Modified: lld/trunk/test/elf2/ppc64-toc-restore.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/ppc64-toc-restore.s?rev=250230&r1=250229&r2=250230&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/ppc64-toc-restore.s?rev=250230&r1=250229&r2=250230&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf2/ppc64-toc-restore.s (original)<br>
+++ lld/trunk/test/elf2/ppc64-toc-restore.s Tue Oct 13 16:47:34 2015<br>
@@ -52,4 +52,11 @@ last:<br>
<br>
 // CHECK: Disassembly of section .plt:<br>
 // CHECK: .plt:<br>
-// CHECK: 20020:<br>
+// CHECK: 20020:       f8 41 00 28     std 2, 40(1)<br>
+// CHECK: 20024:       3d 62 00 00     addis 11, 2, 0<br>
+// CHECK: 20028:       e9 8b 80 00     ld 12, -32768(11)<br>
+// CHECK: 2002c:       e9 6c 00 00     ld 11, 0(12)<br>
+// CHECK: 20030:       7d 69 03 a6     mtctr 11<br>
+// CHECK: 20034:       e8 4c 00 08     ld 2, 8(12)<br>
+// CHECK: 20038:       e9 6c 00 10     ld 11, 16(12)<br>
+// CHECK: 2003c:       4e 80 04 20     bctr<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>