[Lldb-commits] [lldb] r156643 - in /lldb/branches/apple/python-GIL: ./ include/lldb/Target/ scripts/Python/ scripts/Python/interface/ source/Expression/ source/Interpreter/ source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/ source/Plugins/Process/Utility/ source/Target/ test/expression_command/issue_11588/ www/

Filipe Cabecinhas me at filcab.net
Fri May 11 14:06:13 PDT 2012


Author: filcab
Date: Fri May 11 16:06:13 2012
New Revision: 156643

URL: http://llvm.org/viewvc/llvm-project?rev=156643&view=rev
Log:
Merge changed from ToT trunk.

Modified:
    lldb/branches/apple/python-GIL/   (props changed)
    lldb/branches/apple/python-GIL/include/lldb/Target/ThreadPlanCallFunction.h
    lldb/branches/apple/python-GIL/scripts/Python/interface/SBBlock.i
    lldb/branches/apple/python-GIL/scripts/Python/interface/SBData.i
    lldb/branches/apple/python-GIL/scripts/Python/interface/SBInstructionList.i
    lldb/branches/apple/python-GIL/scripts/Python/interface/SBModule.i
    lldb/branches/apple/python-GIL/scripts/Python/interface/SBProcess.i
    lldb/branches/apple/python-GIL/scripts/Python/interface/SBSymbolContextList.i
    lldb/branches/apple/python-GIL/scripts/Python/interface/SBTarget.i
    lldb/branches/apple/python-GIL/scripts/Python/interface/SBThread.i
    lldb/branches/apple/python-GIL/scripts/Python/interface/SBValueList.i
    lldb/branches/apple/python-GIL/scripts/Python/python-typemaps.swig
    lldb/branches/apple/python-GIL/source/Expression/ClangFunction.cpp
    lldb/branches/apple/python-GIL/source/Interpreter/OptionGroupPlatform.cpp
    lldb/branches/apple/python-GIL/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp
    lldb/branches/apple/python-GIL/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp
    lldb/branches/apple/python-GIL/source/Target/Thread.cpp
    lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallFunction.cpp
    lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallUserExpression.cpp
    lldb/branches/apple/python-GIL/test/expression_command/issue_11588/Test11588.py
    lldb/branches/apple/python-GIL/www/lldb-gdb.html

Propchange: lldb/branches/apple/python-GIL/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri May 11 16:06:13 2012
@@ -1 +1 @@
-/lldb/trunk:156467-156605
+/lldb/trunk:156467-156639

Modified: lldb/branches/apple/python-GIL/include/lldb/Target/ThreadPlanCallFunction.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/include/lldb/Target/ThreadPlanCallFunction.h?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/include/lldb/Target/ThreadPlanCallFunction.h (original)
+++ lldb/branches/apple/python-GIL/include/lldb/Target/ThreadPlanCallFunction.h Fri May 11 16:06:13 2012
@@ -133,7 +133,6 @@
 
     bool
     ConstructorSetup (Thread &thread,
-                      bool discard_on_error,
                       ABI *& abi,
                       lldb::addr_t &start_load_addr,
                       lldb::addr_t &function_load_addr);
@@ -170,6 +169,7 @@
     lldb::ValueObjectSP                             m_return_valobj_sp;  // If this contains a valid pointer, use the ABI to extract values when complete
     bool                                            m_takedown_done;    // We want to ensure we only do the takedown once.  This ensures that.
     lldb::addr_t                                    m_stop_address;     // This is the address we stopped at.  Also set in DoTakedown;
+    bool                                            m_discard_on_error;
 
     DISALLOW_COPY_AND_ASSIGN (ThreadPlanCallFunction);
 };

Modified: lldb/branches/apple/python-GIL/scripts/Python/interface/SBBlock.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/interface/SBBlock.i?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/interface/SBBlock.i (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/interface/SBBlock.i Fri May 11 16:06:13 2012
@@ -116,7 +116,7 @@
         
             def __len__(self):
                 if self.sbblock:
-                    return self.sbblock.GetNumRanges()
+                    return int(self.sbblock.GetNumRanges())
                 return 0
         
             def __getitem__(self, key):

Modified: lldb/branches/apple/python-GIL/scripts/Python/interface/SBData.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/interface/SBData.i?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/interface/SBData.i (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/interface/SBData.i Fri May 11 16:06:13 2012
@@ -156,7 +156,7 @@
                 else:
                     return my_data
             def __len__(self):
-                return self.sbdata.GetByteSize()/self.item_size
+                return int(self.sbdata.GetByteSize()/self.item_size)
             def all(self):
                 return self[0:len(self)]
         

Modified: lldb/branches/apple/python-GIL/scripts/Python/interface/SBInstructionList.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/interface/SBInstructionList.i?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/interface/SBInstructionList.i (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/interface/SBInstructionList.i Fri May 11 16:06:13 2012
@@ -62,7 +62,7 @@
     %pythoncode %{
         def __len__(self):
             '''Access len of the instruction list.'''
-            return self.GetSize();
+            return int(self.GetSize())
 
         def __getitem__(self, key):
             '''Access instructions by integer index.'''

Modified: lldb/branches/apple/python-GIL/scripts/Python/interface/SBModule.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/interface/SBModule.i?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/interface/SBModule.i (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/interface/SBModule.i Fri May 11 16:06:13 2012
@@ -259,7 +259,7 @@
         
             def __len__(self):
                 if self.sbmodule:
-                    return self.sbmodule.GetNumSymbols()
+                    return int(self.sbmodule.GetNumSymbols())
                 return 0
         
             def __getitem__(self, key):
@@ -315,7 +315,7 @@
         
             def __len__(self):
                 if self.sbmodule:
-                    return self.sbmodule.GetNumSections()
+                    return int(self.sbmodule.GetNumSections())
                 return 0
         
             def __getitem__(self, key):

Modified: lldb/branches/apple/python-GIL/scripts/Python/interface/SBProcess.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/interface/SBProcess.i?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/interface/SBProcess.i (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/interface/SBProcess.i Fri May 11 16:06:13 2012
@@ -321,7 +321,8 @@
                 self.sbprocess = sbprocess
         
             def __len__(self):
-                if self.sbprocess: return self.sbprocess.GetNumThreads()
+                if self.sbprocess:
+                    return int(self.sbprocess.GetNumThreads())
                 return 0
         
             def __getitem__(self, key):

Modified: lldb/branches/apple/python-GIL/scripts/Python/interface/SBSymbolContextList.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/interface/SBSymbolContextList.i?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/interface/SBSymbolContextList.i (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/interface/SBSymbolContextList.i Fri May 11 16:06:13 2012
@@ -62,7 +62,7 @@
     
     %pythoncode %{
         def __len__(self):
-            return self.GetSize()
+            return int(self.GetSize())
 
         def __getitem__(self, key):
             count = len(self)

Modified: lldb/branches/apple/python-GIL/scripts/Python/interface/SBTarget.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/interface/SBTarget.i?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/interface/SBTarget.i (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/interface/SBTarget.i Fri May 11 16:06:13 2012
@@ -691,7 +691,7 @@
         
             def __len__(self):
                 if self.sbtarget:
-                    return self.sbtarget.GetNumModules()
+                    return int(self.sbtarget.GetNumModules())
                 return 0
         
             def __getitem__(self, key):

Modified: lldb/branches/apple/python-GIL/scripts/Python/interface/SBThread.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/interface/SBThread.i?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/interface/SBThread.i (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/interface/SBThread.i Fri May 11 16:06:13 2012
@@ -182,7 +182,7 @@
 
             def __len__(self):
                 if self.sbthread:
-                    return self.sbthread.GetNumFrames()
+                    return int(self.sbthread.GetNumFrames())
                 return 0
             
             def __getitem__(self, key):

Modified: lldb/branches/apple/python-GIL/scripts/Python/interface/SBValueList.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/interface/SBValueList.i?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/interface/SBValueList.i (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/interface/SBValueList.i Fri May 11 16:06:13 2012
@@ -98,8 +98,8 @@
     FindValueObjectByUID (lldb::user_id_t uid);
     %pythoncode %{
         def __len__(self):
-            return self.GetSize()
-        
+            return int(self.GetSize())
+
         def __getitem__(self, key):
             count = len(self)
             #------------------------------------------------------------

Modified: lldb/branches/apple/python-GIL/scripts/Python/python-typemaps.swig
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/scripts/Python/python-typemaps.swig?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/scripts/Python/python-typemaps.swig (original)
+++ lldb/branches/apple/python-GIL/scripts/Python/python-typemaps.swig Fri May 11 16:06:13 2012
@@ -116,11 +116,14 @@
 // typemap for an incoming buffer
 // See also SBProcess::ReadMemory.
 %typemap(in) (void *buf, size_t size) {
-   if (!PyInt_Check($input)) {
-       PyErr_SetString(PyExc_ValueError, "Expecting an integer");
-       return NULL;
+   if (PyInt_Check($input)) {
+      $2 = PyInt_AsLong($input);
+   } else if (PyLong_Check($input)) {
+      $2 = PyLong_AsLong($input);
+   } else {
+      PyErr_SetString(PyExc_ValueError, "Expecting an integer or long object");
+      return NULL;
    }
-   $2 = PyInt_AsLong($input);
    if ($2 <= 0) {
        PyErr_SetString(PyExc_ValueError, "Positive integer expected");
        return NULL;
@@ -329,4 +332,4 @@
 
 %typemap(freearg) (uint32_t *versions) {
     free($1);
-}
\ No newline at end of file
+}

Modified: lldb/branches/apple/python-GIL/source/Expression/ClangFunction.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/source/Expression/ClangFunction.cpp?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/source/Expression/ClangFunction.cpp (original)
+++ lldb/branches/apple/python-GIL/source/Expression/ClangFunction.cpp Fri May 11 16:06:13 2012
@@ -410,6 +410,8 @@
                                                        discard_on_error,
                                                        this_arg,
                                                        cmd_arg);
+    new_plan->SetIsMasterPlan(true);
+    new_plan->SetOkayToDiscard (false);
     return new_plan;
 }
 

Modified: lldb/branches/apple/python-GIL/source/Interpreter/OptionGroupPlatform.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/source/Interpreter/OptionGroupPlatform.cpp?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/source/Interpreter/OptionGroupPlatform.cpp (original)
+++ lldb/branches/apple/python-GIL/source/Interpreter/OptionGroupPlatform.cpp Fri May 11 16:06:13 2012
@@ -34,7 +34,7 @@
         platform_sp = Platform::Create (m_platform_name.c_str(), error);
         if (platform_sp)
         {
-            if (!platform_sp->IsCompatibleArchitecture(arch, &platform_arch))
+            if (platform_arch.IsValid() && !platform_sp->IsCompatibleArchitecture(arch, &platform_arch))
             {
                 error.SetErrorStringWithFormat("platform '%s' doesn't support '%s'", platform_sp->GetName(), arch.GetTriple().getTriple().c_str());
                 platform_sp.reset();

Modified: lldb/branches/apple/python-GIL/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp (original)
+++ lldb/branches/apple/python-GIL/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp Fri May 11 16:06:13 2012
@@ -65,12 +65,8 @@
 void
 AppleThreadPlanStepThroughObjCTrampoline::DidPush ()
 {
-//    StreamString errors;
-//    ExecutionContext exc_ctx;
-//    m_thread.CalculateExecutionContext(exc_ctx);
-//    m_func_sp.reset(m_impl_function->GetThreadPlanToCallFunction (exc_ctx, m_args_addr, errors, m_stop_others));
-//    m_func_sp->SetPrivate(true);
-//    m_thread.QueueThreadPlan (m_func_sp, false);
+    // Setting up the memory space for the called function text might require allocations,
+    // i.e. a nested function call.  This needs to be done as a PreResumeAction.
     m_thread.GetProcess()->AddPreResumeAction (PreResumeInitializeClangFunction, (void *) this);
 }
 
@@ -91,6 +87,7 @@
         m_thread.CalculateExecutionContext(exc_ctx);
         m_func_sp.reset(m_impl_function->GetThreadPlanToCallFunction (exc_ctx, m_args_addr, errors, m_stop_others));
         m_func_sp->SetPrivate(true);
+        m_func_sp->SetOkayToDiscard(true);
         m_thread.QueueThreadPlan (m_func_sp, false);
     }
     return true;

Modified: lldb/branches/apple/python-GIL/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp (original)
+++ lldb/branches/apple/python-GIL/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp Fri May 11 16:06:13 2012
@@ -90,6 +90,10 @@
                 if (call_plan_sp)
                 {
                     StreamFile error_strm;
+                    // This plan is a utility plan, so set it to discard itself when done.
+                    call_plan_sp->SetIsMasterPlan (true);
+                    call_plan_sp->SetOkayToDiscard(true);
+                    
                     StackFrame *frame = thread->GetStackFrameAtIndex (0).get();
                     if (frame)
                     {
@@ -164,6 +168,10 @@
                if (call_plan_sp)
                {
                    StreamFile error_strm;
+                   // This plan is a utility plan, so set it to discard itself when done.
+                   call_plan_sp->SetIsMasterPlan (true);
+                   call_plan_sp->SetOkayToDiscard(true);
+                   
                    StackFrame *frame = thread->GetStackFrameAtIndex (0).get();
                    if (frame)
                    {

Modified: lldb/branches/apple/python-GIL/source/Target/Thread.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/source/Target/Thread.cpp?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/source/Target/Thread.cpp (original)
+++ lldb/branches/apple/python-GIL/source/Target/Thread.cpp Fri May 11 16:06:13 2012
@@ -447,7 +447,6 @@
                             break;
                         }
                     }
-
                 }
                 else
                 {

Modified: lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallFunction.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallFunction.cpp?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallFunction.cpp (original)
+++ lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallFunction.cpp Fri May 11 16:06:13 2012
@@ -36,15 +36,12 @@
 //----------------------------------------------------------------------
 bool
 ThreadPlanCallFunction::ConstructorSetup (Thread &thread,
-                                          bool discard_on_error,
                                           ABI *& abi,
                                           lldb::addr_t &start_load_addr,
                                           lldb::addr_t &function_load_addr)
 {
-    // Call function thread plans need to be master plans so that they can potentially stay on the stack when
-    // a breakpoint is hit during the function call.
     SetIsMasterPlan (true);
-    SetOkayToDiscard (discard_on_error);
+    SetOkayToDiscard (false);
 
     ProcessSP process_sp (thread.GetProcess());
     if (!process_sp)
@@ -136,12 +133,13 @@
     m_function_sp (NULL),
     m_return_type (return_type),
     m_takedown_done (false),
-    m_stop_address (LLDB_INVALID_ADDRESS)
+    m_stop_address (LLDB_INVALID_ADDRESS),
+    m_discard_on_error (discard_on_error)
 {
     lldb::addr_t start_load_addr;
     ABI *abi;
     lldb::addr_t function_load_addr;
-    if (!ConstructorSetup (thread, discard_on_error, abi, start_load_addr, function_load_addr))
+    if (!ConstructorSetup (thread, abi, start_load_addr, function_load_addr))
         return;
         
     if (this_arg && cmd_arg)
@@ -204,7 +202,7 @@
     lldb::addr_t start_load_addr;
     ABI *abi;
     lldb::addr_t function_load_addr;
-    if (!ConstructorSetup (thread, discard_on_error, abi, start_load_addr, function_load_addr))
+    if (!ConstructorSetup (thread, abi, start_load_addr, function_load_addr))
         return;
     
     if (!abi->PrepareTrivialCall (thread, 
@@ -354,7 +352,7 @@
         return true;
     
     // If we don't want to discard this plan, than any stop we don't understand should be propagated up the stack.
-    if (!OkayToDiscard())
+    if (!m_discard_on_error)
         return false;
             
     // Otherwise, check the case where we stopped for an internal breakpoint, in that case, continue on.
@@ -386,7 +384,13 @@
                 return false;
         }
         
-        return OkayToDiscard();
+        if (m_discard_on_error)
+        {
+            DoTakedown(false);
+            return true;
+        }
+        else
+            return false;
     }
     else
     {
@@ -396,7 +400,7 @@
         // explain the stop.
         if (m_subplan_sp != NULL)
         {
-            if (OkayToDiscard())
+            if (m_discard_on_error)
             {
                 DoTakedown(false);
                 return true;

Modified: lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallUserExpression.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallUserExpression.cpp?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallUserExpression.cpp (original)
+++ lldb/branches/apple/python-GIL/source/Target/ThreadPlanCallUserExpression.cpp Fri May 11 16:06:13 2012
@@ -47,6 +47,9 @@
     ThreadPlanCallFunction (thread, function, ClangASTType(), arg, stop_other_threads, discard_on_error, this_arg, cmd_arg),
     m_user_expression_sp (user_expression_sp)
 {
+    // User expressions are generally "User generated" so we should set them up to stop when done.
+    SetIsMasterPlan (true);
+    SetOkayToDiscard(false);
 }
 
 ThreadPlanCallUserExpression::~ThreadPlanCallUserExpression ()

Modified: lldb/branches/apple/python-GIL/test/expression_command/issue_11588/Test11588.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/test/expression_command/issue_11588/Test11588.py?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/test/expression_command/issue_11588/Test11588.py (original)
+++ lldb/branches/apple/python-GIL/test/expression_command/issue_11588/Test11588.py Fri May 11 16:06:13 2012
@@ -59,13 +59,13 @@
                 addr = addr - 1
                 self.runCmd("register write r14 %d" % addr)
                 self.expect("register read r14",
-                    substrs = ["0x",hex(addr)[2:]])
+                    substrs = ["0x",hex(addr)[2:].rstrip("L")])  # Remove trailing 'L' if it exists
                 self.expect("print *(StgClosure*)$r14",
                     substrs = ["(StgClosure) $",
                     "(StgClosure *) &$","0x",
                     "(long) addr = ",
                     "(long) load_address = ",
-                    hex(addr)[2:],
+                    hex(addr)[2:].rstrip("L"),
                     str(addr)])
 
 

Modified: lldb/branches/apple/python-GIL/www/lldb-gdb.html
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/python-GIL/www/lldb-gdb.html?rev=156643&r1=156642&r2=156643&view=diff
==============================================================================
--- lldb/branches/apple/python-GIL/www/lldb-gdb.html (original)
+++ lldb/branches/apple/python-GIL/www/lldb-gdb.html Fri May 11 16:06:13 2012
@@ -871,6 +871,30 @@
                     </table>
                     <p>
                 </div>
+            <div class="postfooter"></div>
+            <h1 class ="postheader">Miscellaneous</h1>
+                <div class="post">
+                    <p>
+                    <table class="stats" width="620" cellspacing="0">
+                    <tr>
+                        <td class="hed" width="50%">LLDB</td>
+                        <td class="hed" width="50%">GDB</td>
+                    </tr>
+
+                    <tr><td class="header" colspan="2">Echo text to the screen.</td></tr>
+                    <tr>
+                        <td class="content">
+                            <b>(lldb)</b> script print "Here is some text"<br>
+                        </td>
+                        <td class="content">
+                            <b>(gdb)</b> echo Here is some text\n<br>
+                        </td>
+                    </tr>
+
+                    </table>
+                    <p>
+                </div>
+
                 <div class="postfooter"></div>
 
                 <p>





More information about the lldb-commits mailing list