<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>