<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>