[Lldb-commits] [lldb] r243893 - Fix the memory find command such that it can actually take an expression

Enrico Granata egranata at apple.com
Mon Aug 3 11:51:39 PDT 2015


Author: enrico
Date: Mon Aug  3 13:51:39 2015
New Revision: 243893

URL: http://llvm.org/viewvc/llvm-project?rev=243893&view=rev
Log:
Fix the memory find command such that it can actually take an expression

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

Modified: lldb/trunk/source/Commands/CommandObjectMemory.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectMemory.cpp?rev=243893&r1=243892&r2=243893&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectMemory.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectMemory.cpp Mon Aug  3 13:51:39 2015
@@ -1119,7 +1119,8 @@ protected:
       {
           StackFrame* frame = m_exe_ctx.GetFramePtr();
           ValueObjectSP result_sp;
-          if (process->GetTarget().EvaluateExpression(m_memory_options.m_expr.GetStringValue(), frame, result_sp) && result_sp.get())
+          if ((eExpressionCompleted == process->GetTarget().EvaluateExpression(m_memory_options.m_expr.GetStringValue(), frame, result_sp)) &&
+              result_sp.get())
           {
               uint64_t value = result_sp->GetValueAsUnsigned(0);
               switch (result_sp->GetClangType().GetByteSize(nullptr))
@@ -1150,13 +1151,13 @@ protected:
                       result.AppendError("unknown type. pass a string instead");
                       return false;
                   default:
-                      result.AppendError("do not know how to deal with larger than 8 byte result types. pass a string instead");
+                      result.AppendError("result size larger than 8 bytes. pass a string instead");
                       return false;
               }
           }
           else
           {
-              result.AppendError("expression evaluation failed. pass a string instead?");
+              result.AppendError("expression evaluation failed. pass a string instead");
               return false;
           }
       }
@@ -1176,14 +1177,14 @@ protected:
           {
               if (!ever_found)
               {
-                  result.AppendMessage("Your data was not found within the range.\n");
+                  result.AppendMessage("data not found within the range.\n");
                   result.SetStatus(lldb::eReturnStatusSuccessFinishNoResult);
               }
               else
-                  result.AppendMessage("No more matches found within the range.\n");
+                  result.AppendMessage("no more matches within the range.\n");
               break;
           }
-          result.AppendMessageWithFormat("Your data was found at location: 0x%" PRIx64 "\n", found_location);
+          result.AppendMessageWithFormat("data found at location: 0x%" PRIx64 "\n", found_location);
 
           DataBufferHeap dumpbuffer(32,0);
           process->ReadMemory(found_location+m_memory_options.m_offset.GetCurrentValue(), dumpbuffer.GetBytes(), dumpbuffer.GetByteSize(), error);
@@ -1211,27 +1212,16 @@ protected:
     {
         Process *process = m_exe_ctx.GetProcessPtr();
         DataBufferHeap heap(buffer_size, 0);
-        lldb::addr_t fictional_ptr = low;
         for (auto ptr = low;
-             low < high;
-             fictional_ptr++)
+             ptr < high;
+             ptr++)
         {
             Error error;
-            if (ptr == low || buffer_size == 1)
-                process->ReadMemory(ptr, heap.GetBytes(), buffer_size, error);
-            else
-            {
-                memmove(heap.GetBytes(), heap.GetBytes()+1, buffer_size-1);
-                process->ReadMemory(ptr, heap.GetBytes()+buffer_size-1, 1, error);
-            }
+            process->ReadMemory(ptr, heap.GetBytes(), buffer_size, error);
             if (error.Fail())
                 return LLDB_INVALID_ADDRESS;
             if (memcmp(heap.GetBytes(), buffer, buffer_size) == 0)
-                return fictional_ptr;
-            if (ptr == low)
-                ptr += buffer_size;
-            else
-                ptr += 1;
+                return ptr;
         }
         return LLDB_INVALID_ADDRESS;
     }





More information about the lldb-commits mailing list