[Lldb-commits] [PATCH] D57745: [x64] Process the B field of the REX prefix correctly for the PUSH and POP instructions

Jason Molenda via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Tue Feb 5 16:11:43 PST 2019


jasonmolenda accepted this revision.
jasonmolenda added a comment.

The change looks good to me, thanks for fixing this.  I'm not sure you're testing what you meant to test in TestPopRBPWithREX because you're pushing/popping r13.  You could get the unwind state at byte offset 2 (after the push r13 has executed) and see that you can GetRegisterInfo() r13, and the unwind state at byte offset 4 and verify that you can't GetRegisterInfo() r13.  That's a good test to make sure we handle the B bit correctly.



================
Comment at: unittests/UnwindAssembly/x86/Testx86AssemblyInspectionEngine.cpp:1953
+      0x41, 0x55, // pushq %rbp
+      0x41, 0x5d, // popq %rbp
+      0x90        // nop
----------------
These are pushing/popping r13 aren't they?  0x40 0x55 gives us register 5 (rbp), but 0x41 0x55 gives us register 13 (r13) if I'm reading the intel manuals right (volume 2a, section 2.2.1.2 "More on REX Prefix Fields").


Repository:
  rLLDB LLDB

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D57745/new/

https://reviews.llvm.org/D57745





More information about the lldb-commits mailing list