jaydeep added inline comments.

================
Comment at: source/Target/RegisterContext.cpp:106-116
@@ -105,3 +105,13 @@
     uint32_t reg = ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, 
LLDB_REGNUM_GENERIC_PC);
-    return ReadRegisterAsUnsigned (reg, fail_value);
+    uint64_t pc = ReadRegisterAsUnsigned (reg, fail_value);
+
+    if (pc != fail_value)
+    {
+        TargetSP target_sp = m_thread.CalculateTarget();
+        Target *target = target_sp.get();
+        Address addr (pc);
+        pc = addr.GetOpcodeLoadAddress (target);
+    }
+
+    return pc;
 }
----------------
clayborg wrote:
> Bit #0 should be stripped from the PC before it is figured out and the frame 
> might need to track the address class, so this change shouldn't be needed. We 
> don't want extra bits floating around in our code that we have to strip 
> everywhere. This should be done as the stack frames are being created. The 
> frame will need to keep track of the address class in case the address 
> doesn't map back to a shared library (JITed code might not have a module 
> describing the code). So this code should be removed and the backtracer will 
> need to sanitize the addresses as the PC values are unwound.
The breakpoint is set on OpcodeAddress (bit #0 clear), but target returns 
CallableAddress (bit #0 set) when breakpoint is hit. 

Set using:
StoppointLocation (loc_id, addr.GetOpcodeLoadAddress(&owner.GetTarget()), 
hardware)

Find using:
addr_t pc = thread_sp->GetRegisterContext()->GetPC() + m_breakpoint_pc_offset;
lldb::BreakpointSiteSP bp_site_sp = 
thread_sp->GetProcess()->GetBreakpointSiteList().FindByAddress(pc);

We either need to clear bit #0 from the PC we get or need to set the breakpoint 
on CallableAddress (which would need LineTable in CallableAddress form). 






Repository:
  rL LLVM

http://reviews.llvm.org/D12079



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to