<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Looks like it was a u vs. U issue - should be fixed now<div><br><div>
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div style="font-size: medium; orphans: 2; widows: 2; border-collapse: separate; border-spacing: 0px;"><span style="font-size: 12px; orphans: auto; widows: auto;">Enrico Granata</span><br style="font-size: 12px; orphans: auto; widows: auto;"><span style="font-size: 12px; orphans: auto; widows: auto;">✉ egranata@</span><font color="#ff2600" style="font-size: 12px; orphans: auto; widows: auto;"></font><span style="font-size: 12px; orphans: auto; widows: auto;">.com</span><br style="font-size: 12px; orphans: auto; widows: auto;"><span style="font-size: 12px; orphans: auto; widows: auto;">✆ 27683</span></div></div>
</div>
<br><div><div>On Apr 23, 2013, at 1:37 PM, "Malea, Daniel" <<a href="mailto:daniel.malea@intel.com">daniel.malea@intel.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Enrico,<br><br>This commit introduces a regression in TestChar1632T.py:<br><br>See<span class="Apple-converted-space"> </span><a href="http://lab.llvm.org:8011/builders/lldb-x86_64-debian-clang/builds/2530">http://lab.llvm.org:8011/builders/lldb-x86_64-debian-clang/builds/2530</a><br><br>FAIL: LLDB (clang-x86_64) :: test_with_dwarf<br>(TestChar1632T.Char1632TestCase)<br>======================================================================<br>FAIL: test_with_dwarf (TestChar1632T.Char1632TestCase)<br>  Test that the C++11 support for char16_t and char32_t works correctly.<br>----------------------------------------------------------------------<br>Traceback (most recent call last):<br> File<span class="Apple-converted-space"> </span><br>"/home/llvmbb/llvm-build-dir/lldb-x86_64-clang/llvm/tools/lldb/test/lldbtes<br>t.py", line 365, in wrapper<br>   return func(self, *args, **kwargs)<br> File<span class="Apple-converted-space"> </span><br>"/home/llvmbb/llvm-build-dir/lldb-x86_64-clang/llvm/tools/lldb/test/lang/cp<br>p/char1632_t/TestChar1632T.py", line 27, in test_with_dwarf<br>   self.char1632()<br> File<span class="Apple-converted-space"> </span><br>"/home/llvmbb/llvm-build-dir/lldb-x86_64-clang/llvm/tools/lldb/test/lang/cp<br>p/char1632_t/TestChar1632T.py", line 58, in char1632<br>   substrs = ['(const char16_t *) cs16 = ','(const char32_t *) cs32 =<br>','u"hello world ྒྙྐ"','U"hello world ྒྙྐ"'])<br> File<span class="Apple-converted-space"> </span><br>"/home/llvmbb/llvm-build-dir/lldb-x86_64-clang/llvm/tools/lldb/test/lldbtes<br>t.py", line 1514, in expect<br>   msg if msg else EXP_MSG(str, exe))<br>AssertionError: False is not True : 'U"hello world ྒྙྐ"' returns expected<br>result<br><br><br><br><br>Dan<br><br><br><br>On 2013-04-23 4:05 PM, "Enrico Granata" <<a href="mailto:egranata@apple.com">egranata@apple.com</a>> wrote:<br><br><blockquote type="cite">Author: enrico<br>Date: Tue Apr 23 15:05:05 2013<br>New Revision: 180141<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=180141&view=rev">http://llvm.org/viewvc/llvm-project?rev=180141&view=rev</a><br>Log:<br>The new ReadStringFromMemory() API does not work correctly with NSStrings<br>that have an explicit length and no NULL terminator<br>This checkin reverts NSString to the old behavior when appropriate, and<br>cleans up the syntax to call the UTF Reader&Dumper function<br>Incidentally, add a "-d" command-line flag to redo.py with the same<br>semantics as "-d" in dotest.py<br><br><br>Modified:<br>  lldb/trunk/source/DataFormatters/CXXFormatterFunctions.cpp<br>  lldb/trunk/test/redo.py<br><br>Modified: lldb/trunk/source/DataFormatters/CXXFormatterFunctions.cpp<br>URL:<span class="Apple-converted-space"> </span><br><a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/DataFormatters/CXXFo">http://llvm.org/viewvc/llvm-project/lldb/trunk/source/DataFormatters/CXXFo</a><br>rmatterFunctions.cpp?rev=180141&r1=180140&r2=180141&view=diff<br>==========================================================================<br>====<br>--- lldb/trunk/source/DataFormatters/CXXFormatterFunctions.cpp (original)<br>+++ lldb/trunk/source/DataFormatters/CXXFormatterFunctions.cpp Tue Apr 23<br>15:05:05 2013<br>@@ -216,9 +216,9 @@ DumpUTFBufferToStream (ConversionResult<br><br>       if (ConvertFunction)<br>       {<br>-            utf8_data_buffer_sp.reset(new<br>DataBufferHeap(bufferSPSize,0));<br>+            utf8_data_buffer_sp.reset(new<br>DataBufferHeap(4*bufferSPSize,0));<br>           utf8_data_ptr = (UTF8*)utf8_data_buffer_sp->GetBytes();<br>-            utf8_data_end_ptr = utf8_data_ptr + bufferSPSize;<br>+            utf8_data_end_ptr = utf8_data_ptr +<br>utf8_data_buffer_sp->GetByteSize();<br>           ConvertFunction ( (const SourceDataType**)&data_ptr,<br>data_end_ptr, &utf8_data_ptr, utf8_data_end_ptr, lenientConversion );<br>           utf8_data_ptr = (UTF8*)utf8_data_buffer_sp->GetBytes(); //<br>needed because the ConvertFunction will change the value of the data_ptr<br>       }<br>@@ -246,21 +246,151 @@ DumpUTFBufferToStream (ConversionResult<br>}<br><br>template<typename SourceDataType><br>+class ReadUTFBufferAndDumpToStreamOptions<br>+{<br>+public:<br>+    typedef ConversionResult (*ConvertFunctionType) (const<br>SourceDataType**,<br>+                                                     const<br>SourceDataType*,<br>+                                                     UTF8**,<br>+                                                     UTF8*,<br>+                                                     ConversionFlags);<br>+    <br>+    ReadUTFBufferAndDumpToStreamOptions () :<br>+    m_conversion_function(NULL),<br>+    m_location(0),<br>+    m_process_sp(),<br>+    m_stream(NULL),<br>+    m_prefix_token('@'),<br>+    m_quote('"'),<br>+    m_source_size(0),<br>+    m_needs_zero_termination(true)<br>+    {<br>+    }<br>+    <br>+    ReadUTFBufferAndDumpToStreamOptions&<br>+    SetConversionFunction (ConvertFunctionType f)<br>+    {<br>+        m_conversion_function = f;<br>+        return *this;<br>+    }<br>+    <br>+    ConvertFunctionType<br>+    GetConversionFunction () const<br>+    {<br>+        return m_conversion_function;<br>+    }<br>+    <br>+    ReadUTFBufferAndDumpToStreamOptions&<br>+    SetLocation (uint64_t l)<br>+    {<br>+        m_location = l;<br>+        return *this;<br>+    }<br>+    <br>+    uint64_t<br>+    GetLocation () const<br>+    {<br>+        return m_location;<br>+    }<br>+    <br>+    ReadUTFBufferAndDumpToStreamOptions&<br>+    SetProcessSP (ProcessSP p)<br>+    {<br>+        m_process_sp = p;<br>+        return *this;<br>+    }<br>+    <br>+    ProcessSP<br>+    GetProcessSP () const<br>+    {<br>+        return m_process_sp;<br>+    }<br>+    <br>+    ReadUTFBufferAndDumpToStreamOptions&<br>+    SetStream (Stream* s)<br>+    {<br>+        m_stream = s;<br>+        return *this;<br>+    }<br>+    <br>+    Stream*<br>+    GetStream () const<br>+    {<br>+        return m_stream;<br>+    }<br>+    <br>+    ReadUTFBufferAndDumpToStreamOptions&<br>+    SetPrefixToken (char p)<br>+    {<br>+        m_prefix_token = p;<br>+        return *this;<br>+    }<br>+    <br>+    char<br>+    GetPrefixToken () const<br>+    {<br>+        return m_prefix_token;<br>+    }<br>+    <br>+    ReadUTFBufferAndDumpToStreamOptions&<br>+    SetQuote (char q)<br>+    {<br>+        m_quote = q;<br>+        return *this;<br>+    }<br>+    <br>+    char<br>+    GetQuote () const<br>+    {<br>+        return m_quote;<br>+    }<br>+    <br>+    ReadUTFBufferAndDumpToStreamOptions&<br>+    SetSourceSize (uint32_t s)<br>+    {<br>+        m_source_size = s;<br>+        return *this;<br>+    }<br>+    <br>+    uint32_t<br>+    GetSourceSize () const<br>+    {<br>+        return m_source_size;<br>+    }<br>+    <br>+    ReadUTFBufferAndDumpToStreamOptions&<br>+    SetNeedsZeroTermination (bool z)<br>+    {<br>+        m_needs_zero_termination = z;<br>+        return *this;<br>+    }<br>+    <br>+    bool<br>+    GetNeedsZeroTermination () const<br>+    {<br>+        return m_needs_zero_termination;<br>+    }<br>+    <br>+private:<br>+    ConvertFunctionType m_conversion_function;<br>+    uint64_t m_location;<br>+    ProcessSP m_process_sp;<br>+    Stream* m_stream;<br>+    char m_prefix_token;<br>+    char m_quote;<br>+    uint32_t m_source_size;<br>+    bool m_needs_zero_termination;<br>+};<br>+<br>+template<typename SourceDataType><br>static bool<br>-ReadUTFBufferAndDumpToStream (ConversionResult (*ConvertFunction) (const<br>SourceDataType**,<br>-                                                                   const<br>SourceDataType*,<br>-                 <br>UTF8**,<br>-                                                                   UTF8*,<br>-                 <br>ConversionFlags),<br>-                              uint64_t location,<br>-                              const ProcessSP& process_sp,<br>-                              Stream& stream,<br>-                              char prefix_token = '@',<br>-                              char quote = '"',<br>-                              uint32_t sourceSize = 0)<br>+ReadUTFBufferAndDumpToStream (const<br>ReadUTFBufferAndDumpToStreamOptions<SourceDataType>& options)<br>{<br>-    if (location == 0 || location == LLDB_INVALID_ADDRESS)<br>+    if (options.GetLocation() == 0 || options.GetLocation() ==<br>LLDB_INVALID_ADDRESS)<br>       return false;<br>+    <br>+    ProcessSP process_sp(options.GetProcessSP());<br>+    <br>   if (!process_sp)<br>       return false;<br><br>@@ -269,11 +399,20 @@ ReadUTFBufferAndDumpToStream (Conversion<br>   if (origin_encoding != 8 && origin_encoding != 16 && origin_encoding<br>!= 32)<br>       return false;<br>   // if not UTF8, I need a conversion function to return proper UTF8<br>-    if (origin_encoding != 8 && !ConvertFunction)<br>+    if (origin_encoding != 8 && !options.GetConversionFunction())<br>+        return false;<br>+    <br>+    if (!options.GetStream())<br>       return false;<br><br>+    uint32_t sourceSize = options.GetSourceSize();<br>+    bool needs_zero_terminator = options.GetNeedsZeroTermination();<br>+    <br>   if (!sourceSize)<br>+    {<br>       sourceSize =<br>process_sp->GetTarget().GetMaximumSizeOfStringSummary();<br>+        needs_zero_terminator = true;<br>+    }<br>   else<br>       sourceSize =<br>std::min(sourceSize,process_sp->GetTarget().GetMaximumSizeOfStringSummary(<br>));<br><br>@@ -287,16 +426,21 @@ ReadUTFBufferAndDumpToStream (Conversion<br>   Error error;<br>   char *buffer = reinterpret_cast<char *>(buffer_sp->GetBytes());<br><br>-    size_t data_read = process_sp->ReadStringFromMemory(location,<br>buffer, bufferSPSize, error, type_width);<br>+    size_t data_read = 0;<br>+    if (needs_zero_terminator)<br>+        data_read =<br>process_sp->ReadStringFromMemory(options.GetLocation(), buffer,<br>bufferSPSize, error, type_width);<br>+    else<br>+        data_read =<br>process_sp->ReadMemoryFromInferior(options.GetLocation(),<br>(char*)buffer_sp->GetBytes(), bufferSPSize, error);<br>+<br>   if (error.Fail() || data_read == 0)<br>   {<br>-        stream.Printf("unable to read data");<br>+        options.GetStream()->Printf("unable to read data");<br>       return true;<br>   }<br><br>   DataExtractor data(buffer_sp, process_sp->GetByteOrder(),<br>process_sp->GetAddressByteSize());<br><br>-    return DumpUTFBufferToStream(ConvertFunction, data, stream,<br>prefix_token, quote, sourceSize);<br>+    return DumpUTFBufferToStream(options.GetConversionFunction(), data,<br>*options.GetStream(), options.GetPrefixToken(), options.GetQuote(),<br>sourceSize);<br>}<br><br>bool<br>@@ -311,10 +455,14 @@ lldb_private::formatters::Char16StringSu<br>   if (!valobj_addr)<br>       return false;<br><br>-    if<span class="Apple-converted-space"> </span><br>(!ReadUTFBufferAndDumpToStream<UTF16>(ConvertUTF16toUTF8,valobj_addr,<br>-                 <br>process_sp,<br>-                                                                 stream,<br>-                                                                 'u'))<br>+    ReadUTFBufferAndDumpToStreamOptions<UTF16> options;<br>+    options.SetLocation(valobj_addr);<br>+    options.SetConversionFunction(ConvertUTF16toUTF8);<br>+    options.SetProcessSP(process_sp);<br>+    options.SetStream(&stream);<br>+    options.SetPrefixToken('u');<br>+    <br>+    if (!ReadUTFBufferAndDumpToStream(options))<br>   {<br>       stream.Printf("Summary Unavailable");<br>       return true;<br>@@ -335,10 +483,14 @@ lldb_private::formatters::Char32StringSu<br>   if (!valobj_addr)<br>       return false;<br><br>-    if<span class="Apple-converted-space"> </span><br>(!ReadUTFBufferAndDumpToStream<UTF32>(ConvertUTF32toUTF8,valobj_addr,<br>-                 <br>process_sp,<br>-                                                                 stream,<br>-                                                                 'U'))<br>+    ReadUTFBufferAndDumpToStreamOptions<UTF32> options;<br>+    options.SetLocation(valobj_addr);<br>+    options.SetConversionFunction(ConvertUTF32toUTF8);<br>+    options.SetProcessSP(process_sp);<br>+    options.SetStream(&stream);<br>+    options.SetPrefixToken('u');<br>+    <br>+    if (!ReadUTFBufferAndDumpToStream(options))<br>   {<br>       stream.Printf("Summary Unavailable");<br>       return true;<br>@@ -374,23 +526,42 @@ lldb_private::formatters::WCharStringSum<br>   switch (wchar_size)<br>   {<br>       case 8:<br>+        {<br>           // utf 8<br>-            return ReadUTFBufferAndDumpToStream<UTF8>(nullptr, data_addr,<br>-                 <br>process_sp,<br>-                                                               stream,<br>-                                                               'L');<br>+            <br>+            ReadUTFBufferAndDumpToStreamOptions<UTF8> options;<br>+            options.SetLocation(data_addr);<br>+            options.SetConversionFunction(nullptr);<br>+            options.SetProcessSP(process_sp);<br>+            options.SetStream(&stream);<br>+            options.SetPrefixToken('L');<br>+<br>+            return ReadUTFBufferAndDumpToStream(options);<br>+        }<br>       case 16:<br>+        {<br>           // utf 16<br>-            return<br>ReadUTFBufferAndDumpToStream<UTF16>(ConvertUTF16toUTF8, data_addr,<br>-                 <br>process_sp,<br>-                 <br>stream,<br>-                 <br>'L');<br>+            ReadUTFBufferAndDumpToStreamOptions<UTF16> options;<br>+            options.SetLocation(data_addr);<br>+            options.SetConversionFunction(ConvertUTF16toUTF8);<br>+            options.SetProcessSP(process_sp);<br>+            options.SetStream(&stream);<br>+            options.SetPrefixToken('L');<br>+            <br>+            return ReadUTFBufferAndDumpToStream(options);<br>+        }<br>       case 32:<br>+        {<br>           // utf 32<br>-            return<br>ReadUTFBufferAndDumpToStream<UTF32>(ConvertUTF32toUTF8, data_addr,<br>-                 <br>process_sp,<br>-                 <br>stream,<br>-                 <br>'L');<br>+            ReadUTFBufferAndDumpToStreamOptions<UTF32> options;<br>+            options.SetLocation(data_addr);<br>+            options.SetConversionFunction(ConvertUTF32toUTF8);<br>+            options.SetProcessSP(process_sp);<br>+            options.SetStream(&stream);<br>+            options.SetPrefixToken('L');<br>+            <br>+            return ReadUTFBufferAndDumpToStream(options);<br>+        }<br>       default:<br>           stream.Printf("size for wchar_t is not valid");<br>           return true;<br>@@ -825,7 +996,7 @@ lldb_private::formatters::NSStringSummar<br>#endif<br>                  void* contentsAllocator = %p<br>              }<br>-           } variants;<br>+           } variants; ==> (M:%dI:%dL:%zuU:%dS:%dN:%d)<br>          };\n)",<br>   my_string_data._cfisa,<br><br>my_string_data._cfinfo[0],my_string_data._cfinfo[1],my_string_data._cfinfo<br>[2],my_string_data._cfinfo[3],<br>@@ -845,7 +1016,13 @@ lldb_private::formatters::NSStringSummar<br>   my_string_data.variants.notInlineMutable.capacityProvidedExternally,<br>   my_string_data.variants.notInlineMutable.desiredCapacity,<br>   my_string_data.variants.notInlineMutable.desiredCapacity,<br>-    my_string_data.variants.notInlineMutable.contentsAllocator);<br>+    my_string_data.variants.notInlineMutable.contentsAllocator,<br>+    is_mutable,<br>+    is_inline,<br>+    explicit_length,<br>+    is_unicode,<br>+    is_special,<br>+    has_null);<br>#endif<br><br>   if (strcmp(class_name,"NSString") &&<br>@@ -862,16 +1039,6 @@ lldb_private::formatters::NSStringSummar<br>       return true;<br>   }<br><br>-#ifdef WANT_DEEP_PRNT<br>-    stream.Printf("(M:%dI:%dL:%zuU:%dS:%dN:%d) ",<br>-                  is_mutable,<br>-                  is_inline,<br>-                  explicit_length,<br>-                  is_unicode,<br>-                  is_special,<br>-                  has_null);<br>-#endif<br>-    <br>   if (is_mutable)<br>   {<br>       uint64_t location = 2 * ptr_size + valobj_addr;<br>@@ -879,7 +1046,18 @@ lldb_private::formatters::NSStringSummar<br>       if (error.Fail())<br>           return false;<br>       if (has_explicit_length and is_unicode)<br>-            return ReadUTFBufferAndDumpToStream<UTF16><br>(ConvertUTF16toUTF8,location, process_sp, stream, '@', '"',<br>explicit_length);<br>+        {<br>+            ReadUTFBufferAndDumpToStreamOptions<UTF16> options;<br>+            options.SetConversionFunction(ConvertUTF16toUTF8);<br>+            options.SetLocation(location);<br>+            options.SetProcessSP(process_sp);<br>+            options.SetStream(&stream);<br>+            options.SetPrefixToken('@');<br>+            options.SetQuote('"');<br>+            options.SetSourceSize(explicit_length);<br>+            options.SetNeedsZeroTermination(false);<br>+            return ReadUTFBufferAndDumpToStream (options);<br>+        }<br>       else<br>           return<br>ReadAsciiBufferAndDumpToStream(location+1,process_sp,stream,<br>explicit_length);<br>   }<br>@@ -900,19 +1078,37 @@ lldb_private::formatters::NSStringSummar<br>           }<br>           else<br>               location += ptr_size;<br>-                }<br>+        }<br>       else<br>       {<br>           location = process_sp->ReadPointerFromMemory(location,<br>error);<br>           if (error.Fail())<br>               return false;<br>       }<br>-        return ReadUTFBufferAndDumpToStream<UTF16> (ConvertUTF16toUTF8,<br>location, process_sp, stream, '@', '"', explicit_length);<br>+        ReadUTFBufferAndDumpToStreamOptions<UTF16> options;<br>+        options.SetConversionFunction(ConvertUTF16toUTF8);<br>+        options.SetLocation(location);<br>+        options.SetProcessSP(process_sp);<br>+        options.SetStream(&stream);<br>+        options.SetPrefixToken('@');<br>+        options.SetQuote('"');<br>+        options.SetSourceSize(explicit_length);<br>+        options.SetNeedsZeroTermination(has_explicit_length == false);<br>+        return ReadUTFBufferAndDumpToStream (options);<br>   }<br>   else if (is_special)<br>   {<br>       uint64_t location = valobj_addr + (ptr_size == 8 ? 12 : 8);<br>-        return ReadUTFBufferAndDumpToStream<UTF16> (ConvertUTF16toUTF8,<br>location, process_sp, stream, '@', '"', explicit_length);<br>+        ReadUTFBufferAndDumpToStreamOptions<UTF16> options;<br>+        options.SetConversionFunction(ConvertUTF16toUTF8);<br>+        options.SetLocation(location);<br>+        options.SetProcessSP(process_sp);<br>+        options.SetStream(&stream);<br>+        options.SetPrefixToken('@');<br>+        options.SetQuote('"');<br>+        options.SetSourceSize(explicit_length);<br>+        options.SetNeedsZeroTermination(has_explicit_length == false);<br>+        return ReadUTFBufferAndDumpToStream (options);<br>   }<br>   else if (is_inline)<br>   {<br><br>Modified: lldb/trunk/test/redo.py<br>URL:<span class="Apple-converted-space"> </span><br>http://llvm.org/viewvc/llvm-project/lldb/trunk/test/redo.py?rev=180141&r1=<br>180140&r2=180141&view=diff<br>==========================================================================<br>====<br>--- lldb/trunk/test/redo.py (original)<br>+++ lldb/trunk/test/redo.py Tue Apr 23 15:05:05 2013<br>@@ -28,6 +28,8 @@ redo_specs = []<br># will be considered for re-run.  Examples: ['X86_64', 'clang'].<br>filename_components = []<br><br>+do_delay = False<br>+<br># There is a known bug with respect to comp_specs and arch_specs, in<br>that if we<br># encountered "-C clang" and "-C gcc" when visiting the session files,<br>both<br># compilers will end up in the invocation of the test driver when<br>rerunning.<br>@@ -40,12 +42,13 @@ arch_specs = set()<br><br>def usage():<br>   print"""\<br>-Usage: redo.py [-F filename_component] [-n] [session_dir]<br>+Usage: redo.py [-F filename_component] [-n] [session_dir] [-d]<br>where options:<br>-F : only consider the test for re-run if the session filename conatins<br>the filename component<br>    for example: -F x86_64<br>-n : when running the tests, do not turn on trace mode, i.e, no '-t'<br>option<br>    is passed to the test driver (this will run the tests faster)<br>+-d : pass -d down to the test driver (introduces a delay so you can<br>attach with a debugger)<br><br>and session_dir specifies the session directory which contains previously<br>recorded session infos for all the test cases which either failed or<br>errored.<br>@@ -81,6 +84,7 @@ def redo(suffix, dir, names):<br>   global comp_pattern<br>   global arch_pattern<br>   global filename_components<br>+    global do_delay<br><br>   for name in names:<br>       if name.endswith(suffix):<br>@@ -111,6 +115,7 @@ def main():<br>   global no_trace<br>   global redo_specs<br>   global filename_components<br>+    global do_delay<br><br>   test_dir = sys.path[0]<br>   if not test_dir:<br>@@ -139,6 +144,8 @@ def main():<br>           filename_components.append(sys.argv[index])<br>       elif sys.argv[index] == '-n':<br>           no_trace = True<br>+        elif sys.argv[index] == '-d':<br>+            do_delay = True<br><br>       index += 1<br><br>@@ -176,7 +183,7 @@ def main():<br>   for arch in arch_specs:<br>       archs += "--arch %s " % (arch)<br><br>-    command = "./dotest.py %s %s -v %s -f " % (compilers, archs, "" if<br>no_trace else "-t")<br>+    command = "./dotest.py %s %s -v %s %s -f " % (compilers, archs, ""<br>if no_trace else "-t", "-d" if do_delay else "")<br><br><br>   print "Running %s" % (command + filters)<br><br><br>_______________________________________________<br>lldb-commits mailing list<br>lldb-commits@cs.uiuc.edu<br>http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits</blockquote></div></blockquote></div><br></div></body></html>