[Lldb-commits] [lldb] r177961 - <rdar://problem/13221060>

Enrico Granata egranata at apple.com
Mon Mar 25 18:27:05 PDT 2013


Author: enrico
Date: Mon Mar 25 20:27:04 2013
New Revision: 177961

URL: http://llvm.org/viewvc/llvm-project?rev=177961&view=rev
Log:
<rdar://problem/13221060>

Make register read and write accept $<regname> as valid.
This allows:
(lldb) reg read rbx
     rbx = 0x0000000000000000
(lldb) reg read $rbx
     rbx = 0x0000000000000000
(lldb) reg write $rbx 1
(lldb) reg read $rbx
     rbx = 0x0000000000000001

to function correctly

It is not done at the RegisterContext level because we should keep the internal API clean of this user-friendly behavior and name registers appropriately.
If this ends up being needed in more places we can reconsider.

Modified:
    lldb/trunk/source/Commands/CommandObjectRegister.cpp

Modified: lldb/trunk/source/Commands/CommandObjectRegister.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectRegister.cpp?rev=177961&r1=177960&r2=177961&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectRegister.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectRegister.cpp Mon Mar 25 20:27:04 2013
@@ -228,6 +228,12 @@ protected:
                 const char *arg_cstr;
                 for (int arg_idx = 0; (arg_cstr = command.GetArgumentAtIndex(arg_idx)) != NULL; ++arg_idx)
                 {
+                    // in most LLDB commands we accept $rbx as the name for register RBX - and here we would
+                    // reject it and non-existant. we should be more consistent towards the user and allow them
+                    // to say reg read $rbx - internally, however, we should be strict and not allow ourselves
+                    // to call our registers $rbx in our own API
+                    if (*arg_cstr == '$')
+                        arg_cstr = arg_cstr+1;
                     reg_info = reg_ctx->GetRegisterInfoByName(arg_cstr);
 
                     if (reg_info)
@@ -410,6 +416,15 @@ protected:
         {
             const char *reg_name = command.GetArgumentAtIndex(0);
             const char *value_str = command.GetArgumentAtIndex(1);
+            
+            
+            // in most LLDB commands we accept $rbx as the name for register RBX - and here we would
+            // reject it and non-existant. we should be more consistent towards the user and allow them
+            // to say reg write $rbx - internally, however, we should be strict and not allow ourselves
+            // to call our registers $rbx in our own API
+            if (reg_name && *reg_name == '$')
+                reg_name = reg_name+1;
+            
             const RegisterInfo *reg_info = reg_ctx->GetRegisterInfoByName(reg_name);
 
             if (reg_info)





More information about the lldb-commits mailing list