[Lldb-commits] [lldb] r237454 - Improve the MiVarTestCase.test_lldbmi_var_list_children test (MI)
Pavel Labath
labath at google.com
Mon May 18 08:45:49 PDT 2015
Vince, Ilia,
I think this is related to an issue I have discovered recently, where
lldb fails to parse function prologues generated by gcc-4.9 on i386. I
have updated the XFAIL with a link to the bug I created. I have also
changed the XFAIL to linux-only, as judging by your reply, it is
working on osx.
cheers,
pl
On 18 May 2015 at 16:02, Ilia K <ki.stfu at gmail.com> wrote:
> Hello Vince,
>
> Interesting.. It isn't reproduced on OS X:
>>
>> $ ./dotest.py -v --executable $BUILDDIR/bin/lldb -f
>> MiVarTestCase.test_lldbmi_eval -C gcc-4.9 -A i386
>>
>> ['./dotest.py', '-v', '--executable',
>> '/Users/IliaK/p/llvm/build_ninja/bin/lldb', '-f',
>> 'MiVarTestCase.test_lldbmi_eval', '-C', 'gcc-4.9', '-A', 'i386']
>>
>> LLDB library dir: /Users/IliaK/p/llvm/build_ninja/bin
>>
>> LLDB import library dir: /Users/IliaK/p/llvm/build_ninja/bin
>>
>> lldb-340.99.0
>>
>> lldb.pre_flight: None
>>
>> lldb.post_flight: None
>>
>>
>> Session logs for test failures/errors/unexpected successes will go into
>> directory '2015-05-18-18_00_17'
>>
>> Command invoked: ./dotest.py -v --executable
>> /Users/IliaK/p/llvm/build_ninja/bin/lldb -f MiVarTestCase.test_lldbmi_eval
>> -C gcc-4.9 -A i386
>>
>> compilers=['gcc-4.9']
>>
>>
>> Configuration: arch=i386 compiler=gcc-4.9
>>
>> ----------------------------------------------------------------------
>>
>> Collected 1 test
>>
>>
>> 1: test_lldbmi_eval (TestMiVar.MiVarTestCase)
>>
>> Test that 'lldb-mi --interpreter' works for evaluating. ... unexpected
>> success
>>
>>
>> ----------------------------------------------------------------------
>>
>> Ran 1 test in 6.245s
>>
>>
>> OK (unexpected successes=1)
>
>
> Thanks,
> Ilia
>
>
> On Sat, May 16, 2015 at 12:58 AM, Vince Harron <vince at nethacker.com> wrote:
>>
>> XFAIL'd MiVarTestCase.test_lldbmi_eval on gcc-4.9/i386
>>
>> It times out on TestMyVar:113
>>
>> self.expect("\^done,value=\"0x[0-9a-f]+\"")
>>
>>
>> On Fri, May 15, 2015 at 2:07 PM, Vince Harron <vince at nethacker.com> wrote:
>>>
>>> Please let us know if you need help.
>>>
>>> On Fri, May 15, 2015 at 2:02 PM, Vince Harron <vince at nethacker.com>
>>> wrote:
>>>>
>>>> Hi Illia,
>>>>
>>>> This appears to have broken Linux i386 gcc 4.9.2
>>>>
>>>>
>>>> http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/2419
>>>>
>>>> Is it a quick fix?
>>>>
>>>> If not, can you roll back?
>>>>
>>>> Thanks,
>>>>
>>>> Vince
>>>>
>>>>
>>>> On Fri, May 15, 2015 at 9:13 AM, Ilia K <ki.stfu at gmail.com> wrote:
>>>>>
>>>>> Author: ki.stfu
>>>>> Date: Fri May 15 11:13:51 2015
>>>>> New Revision: 237454
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=237454&view=rev
>>>>> Log:
>>>>> Improve the MiVarTestCase.test_lldbmi_var_list_children test (MI)
>>>>>
>>>>> Modified:
>>>>> lldb/trunk/test/tools/lldb-mi/variable/TestMiVar.py
>>>>> lldb/trunk/test/tools/lldb-mi/variable/main.cpp
>>>>>
>>>>> Modified: lldb/trunk/test/tools/lldb-mi/variable/TestMiVar.py
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/tools/lldb-mi/variable/TestMiVar.py?rev=237454&r1=237453&r2=237454&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lldb/trunk/test/tools/lldb-mi/variable/TestMiVar.py (original)
>>>>> +++ lldb/trunk/test/tools/lldb-mi/variable/TestMiVar.py Fri May 15
>>>>> 11:13:51 2015
>>>>> @@ -239,8 +239,8 @@ class MiVarTestCase(lldbmi_testcase.MiTe
>>>>> self.runCmd("-file-exec-and-symbols %s" % self.myexe)
>>>>> self.expect("\^done")
>>>>>
>>>>> - # Run to BP_var_list_children
>>>>> - line = line_number('main.cpp', '// BP_var_list_children')
>>>>> + # Run to BP_var_list_children_test
>>>>> + line = line_number('main.cpp', '// BP_var_list_children_test')
>>>>> self.runCmd("-break-insert main.cpp:%d" % line)
>>>>> self.expect("\^done,bkpt={number=\"1\"")
>>>>> self.runCmd("-exec-run")
>>>>> @@ -252,6 +252,8 @@ class MiVarTestCase(lldbmi_testcase.MiTe
>>>>>
>>>>> self.expect("\^done,name=\"var_complx\",numchild=\"3\",value=\"\{\.\.\.\}\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"")
>>>>> self.runCmd("-var-create var_complx_array * complx_array")
>>>>>
>>>>> self.expect("\^done,name=\"var_complx_array\",numchild=\"2\",value=\"\[2\]\",type=\"complex_type
>>>>> \[2\]\",thread-id=\"1\",has_more=\"0\"")
>>>>> + self.runCmd("-var-create var_pcomplx * pcomplx")
>>>>> +
>>>>> self.expect("\^done,name=\"var_pcomplx\",numchild=\"2\",value=\"\{\.\.\.\}\",type=\"pcomplex_type\",thread-id=\"1\",has_more=\"0\"")
>>>>>
>>>>> # Test that -var-list-children lists empty children if range
>>>>> is empty
>>>>> # (and that print-values is optional)
>>>>> @@ -268,24 +270,38 @@ class MiVarTestCase(lldbmi_testcase.MiTe
>>>>>
>>>>> self.expect("\^done,numchild=\"3\",children=\[child=\{name=\"var_complx\.i\",exp=\"i\",numchild=\"0\",type=\"int\",thread-id=\"1\",value=\"3\",has_more=\"0\"\},child=\{name=\"var_complx\.inner\",exp=\"inner\",numchild=\"1\",type=\"complex_type::\(anonymous
>>>>> struct\)\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\},child=\{name=\"var_complx\.complex_ptr\",exp=\"complex_ptr\",numchild=\"3\",type=\"complex_type
>>>>> \*\",thread-id=\"1\",value=\"0x[0-9a-f]+\",has_more=\"0\"\}\],has_more=\"0\"")
>>>>> self.runCmd("-var-list-children --simple-values
>>>>> var_complx_array")
>>>>>
>>>>> self.expect("\^done,numchild=\"2\",children=\[child=\{name=\"var_complx_array\.\[0\]\",exp=\"\[0\]\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\},child=\{name=\"var_complx_array\.\[1\]\",exp=\"\[1\]\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"0\"")
>>>>> + self.runCmd("-var-list-children 0 var_pcomplx")
>>>>> +
>>>>> self.expect("\^done,numchild=\"2\",children=\[child=\{name=\"var_pcomplx\.complex_type\",exp=\"complex_type\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\},child={name=\"var_pcomplx\.complx\",exp=\"complx\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"0\"")
>>>>>
>>>>> # Test that -var-list-children lists children without values
>>>>> self.runCmd("-var-list-children 0 var_complx 0 1")
>>>>>
>>>>> self.expect("\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.i\",exp=\"i\",numchild=\"0\",type=\"int\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"1\"")
>>>>> self.runCmd("-var-list-children --no-values var_complx 0 1")
>>>>>
>>>>> self.expect("\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.i\",exp=\"i\",numchild=\"0\",type=\"int\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"1\"")
>>>>> + self.runCmd("-var-list-children --no-values var_complx_array 0
>>>>> 1")
>>>>> +
>>>>> self.expect("\^done,numchild=\"1\",children=\[child=\{name=\"var_complx_array\.\[0\]\",exp=\"\[0\]\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"1\"")
>>>>> + self.runCmd("-var-list-children --no-values var_pcomplx 0 1")
>>>>> +
>>>>> self.expect("\^done,numchild=\"1\",children=\[child=\{name=\"var_pcomplx\.complex_type\",exp=\"complex_type\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"1\"")
>>>>>
>>>>> # Test that -var-list-children lists children with all values
>>>>> self.runCmd("-var-list-children 1 var_complx 1 2")
>>>>>
>>>>> self.expect("\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.inner\",exp=\"inner\",numchild=\"1\",type=\"complex_type::\(anonymous
>>>>> struct\)\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\}\],has_more=\"1\"")
>>>>> self.runCmd("-var-list-children --all-values var_complx 1 2")
>>>>>
>>>>> self.expect("\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.inner\",exp=\"inner\",numchild=\"1\",type=\"complex_type::\(anonymous
>>>>> struct\)\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\}\],has_more=\"1\"")
>>>>> + self.runCmd("-var-list-children --all-values var_complx_array
>>>>> 1 2")
>>>>> +
>>>>> self.expect("\^done,numchild=\"1\",children=\[child=\{name=\"var_complx_array\.\[1\]\",exp=\"\[1\]\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\}\],has_more=\"0\"")
>>>>> + self.runCmd("-var-list-children --all-values var_pcomplx 1 2")
>>>>> +
>>>>> self.expect("\^done,numchild=\"1\",children=\[child={name=\"var_pcomplx\.complx\",exp=\"complx\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\}\],has_more=\"0\"")
>>>>>
>>>>> # Test that -var-list-children lists children with simple
>>>>> values
>>>>> self.runCmd("-var-list-children 2 var_complx 2 4")
>>>>>
>>>>> self.expect("\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.complex_ptr\",exp=\"complex_ptr\",numchild=\"3\",type=\"complex_type
>>>>> \*\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"0\"")
>>>>> self.runCmd("-var-list-children --simple-values var_complx 2
>>>>> 4")
>>>>>
>>>>> self.expect("\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.complex_ptr\",exp=\"complex_ptr\",numchild=\"3\",type=\"complex_type
>>>>> \*\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"0\"")
>>>>> + self.runCmd("-var-list-children --simple-values
>>>>> var_complx_array 2 4")
>>>>> + self.expect("\^done,numchild=\"0\",has_more=\"0\"")
>>>>> + self.runCmd("-var-list-children --simple-values var_pcomplx 2
>>>>> 4")
>>>>> + self.expect("\^done,numchild=\"0\",has_more=\"0\"")
>>>>>
>>>>> # Test that an invalid from is handled
>>>>> # FIXME: -1 is treated as unsigned int
>>>>>
>>>>> Modified: lldb/trunk/test/tools/lldb-mi/variable/main.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/tools/lldb-mi/variable/main.cpp?rev=237454&r1=237453&r2=237454&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lldb/trunk/test/tools/lldb-mi/variable/main.cpp (original)
>>>>> +++ lldb/trunk/test/tools/lldb-mi/variable/main.cpp Fri May 15 11:13:51
>>>>> 2015
>>>>> @@ -16,6 +16,16 @@ struct complex_type
>>>>> complex_type *complex_ptr;
>>>>> };
>>>>>
>>>>> +struct pcomplex_type : complex_type
>>>>> +{
>>>>> + pcomplex_type(const complex_type &complx_base, const complex_type
>>>>> &complx_member)
>>>>> + : complex_type(complx_base), complx(complx_member) { }
>>>>> + complex_type complx;
>>>>> + static int si;
>>>>> +};
>>>>> +
>>>>> +int pcomplex_type::si;
>>>>> +
>>>>> void
>>>>> var_update_test(void)
>>>>> {
>>>>> @@ -35,15 +45,15 @@ var_update_test(void)
>>>>> }
>>>>>
>>>>> void
>>>>> -var_list_children(void)
>>>>> +var_list_children_test(void)
>>>>> {
>>>>> complex_type complx = { 3, { 3L }, &complx };
>>>>> complex_type complx_array[2] = { { 4, { 4L }, &complx_array[1] },
>>>>> { 5, { 5 }, &complx_array[0] } };
>>>>> + pcomplex_type pcomplx({ 6, { 6L }, &pcomplx}, { 7, { 7L },
>>>>> &pcomplx});
>>>>>
>>>>> - // BP_var_list_children
>>>>> + // BP_var_list_children_test
>>>>> }
>>>>>
>>>>> -
>>>>> void
>>>>> gdb_set_show_print_char_array_as_string_test(void)
>>>>> {
>>>>> @@ -84,7 +94,7 @@ main(int argc, char const *argv[])
>>>>> int a = 10, b = 20;
>>>>> s_MyVar = a + b;
>>>>> var_update_test();
>>>>> - var_list_children();
>>>>> + var_list_children_test();
>>>>> gdb_set_show_print_char_array_as_string_test();
>>>>> gdb_set_show_print_expand_aggregates();
>>>>> gdb_set_show_print_aggregate_field_names();
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> lldb-commits mailing list
>>>>> lldb-commits at cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
>>>>
>>>>
>>>
>>
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
>
More information about the lldb-commits
mailing list