| OLD | NEW |
| 1 # Copyright (C) 2010-2012 Free Software Foundation, Inc. | 1 # Copyright (C) 2010-2013 Free Software Foundation, Inc. |
| 2 | 2 |
| 3 # This program is free software; you can redistribute it and/or modify | 3 # This program is free software; you can redistribute it and/or modify |
| 4 # it under the terms of the GNU General Public License as published by | 4 # it under the terms of the GNU General Public License as published by |
| 5 # the Free Software Foundation; either version 3 of the License, or | 5 # the Free Software Foundation; either version 3 of the License, or |
| 6 # (at your option) any later version. | 6 # (at your option) any later version. |
| 7 # | 7 # |
| 8 # This program is distributed in the hope that it will be useful, | 8 # This program is distributed in the hope that it will be useful, |
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 # GNU General Public License for more details. | 11 # GNU General Public License for more details. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 30 if ![runto_main] then { | 30 if ![runto_main] then { |
| 31 fail "Can't run to main" | 31 fail "Can't run to main" |
| 32 return 0 | 32 return 0 |
| 33 } | 33 } |
| 34 | 34 |
| 35 gdb_test_no_output "python import gdb.types" | 35 gdb_test_no_output "python import gdb.types" |
| 36 | 36 |
| 37 # test get_basic_type const stripping | 37 # test get_basic_type const stripping |
| 38 gdb_test_no_output "python const_class1_obj = gdb.parse_and_eval ('const_class1_
obj')" | 38 gdb_test_no_output "python const_class1_obj = gdb.parse_and_eval ('const_class1_
obj')" |
| 39 gdb_test_no_output "python basic_type_const_class1_obj = gdb.types.get_basic_typ
e (const_class1_obj.type)" | 39 gdb_test_no_output "python basic_type_const_class1_obj = gdb.types.get_basic_typ
e (const_class1_obj.type)" |
| 40 gdb_test "python print str (const_class1_obj.type)" "const class1" | 40 gdb_test "python print (str (const_class1_obj.type))" "const class1" |
| 41 set test "const stripping" | 41 set test "const stripping" |
| 42 gdb_test_multiple "python print str (basic_type_const_class1_obj)" $test { | 42 gdb_test_multiple "python print (str (basic_type_const_class1_obj))" $test { |
| 43 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { | 43 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { |
| 44 pass $test | 44 pass $test |
| 45 } | 45 } |
| 46 } | 46 } |
| 47 | 47 |
| 48 # test get_basic_type volatile stripping | 48 # test get_basic_type volatile stripping |
| 49 gdb_test_no_output "python volatile_class1_obj = gdb.parse_and_eval ('volatile_c
lass1_obj')" | 49 gdb_test_no_output "python volatile_class1_obj = gdb.parse_and_eval ('volatile_c
lass1_obj')" |
| 50 gdb_test_no_output "python basic_type_volatile_class1_obj = gdb.types.get_basic_
type (volatile_class1_obj.type)" | 50 gdb_test_no_output "python basic_type_volatile_class1_obj = gdb.types.get_basic_
type (volatile_class1_obj.type)" |
| 51 gdb_test "python print str (volatile_class1_obj.type)" "volatile class1" | 51 gdb_test "python print (str (volatile_class1_obj.type))" "volatile class1" |
| 52 set test "volatile stripping" | 52 set test "volatile stripping" |
| 53 gdb_test_multiple "python print str (basic_type_volatile_class1_obj)" $test { | 53 gdb_test_multiple "python print (str (basic_type_volatile_class1_obj))" $test { |
| 54 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { | 54 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { |
| 55 pass $test | 55 pass $test |
| 56 } | 56 } |
| 57 } | 57 } |
| 58 | 58 |
| 59 # test get_basic_type volatile+const stripping | 59 # test get_basic_type volatile+const stripping |
| 60 gdb_test_no_output "python const_volatile_class1_obj = gdb.parse_and_eval ('cons
t_volatile_class1_obj')" | 60 gdb_test_no_output "python const_volatile_class1_obj = gdb.parse_and_eval ('cons
t_volatile_class1_obj')" |
| 61 gdb_test_no_output "python basic_type_const_volatile_class1_obj = gdb.types.get_
basic_type (const_volatile_class1_obj.type)" | 61 gdb_test_no_output "python basic_type_const_volatile_class1_obj = gdb.types.get_
basic_type (const_volatile_class1_obj.type)" |
| 62 gdb_test "python print str (const_volatile_class1_obj.type)" "const volatile cla
ss1" | 62 gdb_test "python print (str (const_volatile_class1_obj.type))" "const volatile c
lass1" |
| 63 set test "volatile+const stripping" | 63 set test "volatile+const stripping" |
| 64 gdb_test_multiple "python print str (basic_type_const_volatile_class1_obj)" $tes
t { | 64 gdb_test_multiple "python print (str (basic_type_const_volatile_class1_obj))" $t
est { |
| 65 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { | 65 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { |
| 66 pass $test | 66 pass $test |
| 67 } | 67 } |
| 68 } | 68 } |
| 69 | 69 |
| 70 # test get_basic_type typedef stripping | 70 # test get_basic_type typedef stripping |
| 71 gdb_test_no_output "python typedef_class1_obj = gdb.parse_and_eval ('typedef_cla
ss1_obj')" | 71 gdb_test_no_output "python typedef_class1_obj = gdb.parse_and_eval ('typedef_cla
ss1_obj')" |
| 72 gdb_test_no_output "python basic_type_typedef_class1_obj = gdb.types.get_basic_t
ype (typedef_class1_obj.type)" | 72 gdb_test_no_output "python basic_type_typedef_class1_obj = gdb.types.get_basic_t
ype (typedef_class1_obj.type)" |
| 73 gdb_test "python print str (typedef_class1_obj.type)" "typedef_class1" | 73 gdb_test "python print (str (typedef_class1_obj.type))" "typedef_class1" |
| 74 set test "typedef stripping" | 74 set test "typedef stripping" |
| 75 gdb_test_multiple "python print str (basic_type_typedef_class1_obj)" $test { | 75 gdb_test_multiple "python print (str (basic_type_typedef_class1_obj))" $test { |
| 76 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { | 76 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { |
| 77 pass $test | 77 pass $test |
| 78 } | 78 } |
| 79 } | 79 } |
| 80 | 80 |
| 81 # test get_basic_type reference stripping | 81 # test get_basic_type reference stripping |
| 82 gdb_test_no_output "python class1_ref_obj = gdb.parse_and_eval ('class1_ref_obj'
)" | 82 gdb_test_no_output "python class1_ref_obj = gdb.parse_and_eval ('class1_ref_obj'
)" |
| 83 gdb_test_no_output "python basic_type_class1_ref_obj = gdb.types.get_basic_type
(class1_ref_obj.type)" | 83 gdb_test_no_output "python basic_type_class1_ref_obj = gdb.types.get_basic_type
(class1_ref_obj.type)" |
| 84 gdb_test "python print str (class1_ref_obj.type)" "class1 &" | 84 gdb_test "python print (str (class1_ref_obj.type))" "class1 &" |
| 85 set test "reference stripping" | 85 set test "reference stripping" |
| 86 gdb_test_multiple "python print str (basic_type_class1_ref_obj)" $test { | 86 gdb_test_multiple "python print (str (basic_type_class1_ref_obj))" $test { |
| 87 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { | 87 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { |
| 88 pass $test | 88 pass $test |
| 89 } | 89 } |
| 90 } | 90 } |
| 91 | 91 |
| 92 # test nested typedef stripping | 92 # test nested typedef stripping |
| 93 gdb_test_no_output "python typedef_const_typedef_class1_obj = gdb.parse_and_eval
('typedef_const_typedef_class1_obj')" | 93 gdb_test_no_output "python typedef_const_typedef_class1_obj = gdb.parse_and_eval
('typedef_const_typedef_class1_obj')" |
| 94 gdb_test_no_output "python basic_type_typedef_const_typedef_class1_obj = gdb.typ
es.get_basic_type (typedef_const_typedef_class1_obj.type)" | 94 gdb_test_no_output "python basic_type_typedef_const_typedef_class1_obj = gdb.typ
es.get_basic_type (typedef_const_typedef_class1_obj.type)" |
| 95 gdb_test "python print str (typedef_class1_obj.type)" "typedef_class1" | 95 gdb_test "python print (str (typedef_class1_obj.type))" "typedef_class1" |
| 96 set test "nested typedef stripping" | 96 set test "nested typedef stripping" |
| 97 gdb_test_multiple "python print str (basic_type_typedef_const_typedef_class1_obj
)" $test { | 97 gdb_test_multiple "python print (str (basic_type_typedef_const_typedef_class1_ob
j))" $test { |
| 98 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { | 98 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { |
| 99 pass $test | 99 pass $test |
| 100 } | 100 } |
| 101 } | 101 } |
| 102 | 102 |
| 103 # test nested typedef/reference stripping | 103 # test nested typedef/reference stripping |
| 104 gdb_test_no_output "python typedef_const_typedef_class1_ref_obj = gdb.parse_and_
eval ('typedef_const_typedef_class1_ref_obj')" | 104 gdb_test_no_output "python typedef_const_typedef_class1_ref_obj = gdb.parse_and_
eval ('typedef_const_typedef_class1_ref_obj')" |
| 105 gdb_test_no_output "python basic_type_typedef_const_typedef_class1_ref_obj = gdb
.types.get_basic_type (typedef_const_typedef_class1_ref_obj.type)" | 105 gdb_test_no_output "python basic_type_typedef_const_typedef_class1_ref_obj = gdb
.types.get_basic_type (typedef_const_typedef_class1_ref_obj.type)" |
| 106 gdb_test "python print str (typedef_const_typedef_class1_ref_obj.type)" "const t
ypedef_const_typedef_class1_ref" | 106 gdb_test "python print (str (typedef_const_typedef_class1_ref_obj.type))" "const
typedef_const_typedef_class1_ref" |
| 107 set test "nested typedef/ref stripping" | 107 set test "nested typedef/ref stripping" |
| 108 gdb_test_multiple "python print str (basic_type_typedef_const_typedef_class1_ref
_obj)" $test { | 108 gdb_test_multiple "python print (str (basic_type_typedef_const_typedef_class1_re
f_obj))" $test { |
| 109 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { | 109 -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" { |
| 110 pass $test | 110 pass $test |
| 111 } | 111 } |
| 112 } | 112 } |
| 113 | 113 |
| 114 # test has_field on simple class | 114 # test has_field on simple class |
| 115 gdb_test_no_output "python class1_obj = gdb.parse_and_eval ('class1_obj')" | 115 gdb_test_no_output "python class1_obj = gdb.parse_and_eval ('class1_obj')" |
| 116 gdb_test "python print gdb.types.has_field (class1_obj.type, 'x')" "True" | 116 gdb_test "python print (gdb.types.has_field (class1_obj.type, 'x'))" "True" |
| 117 gdb_test "python print gdb.types.has_field (class1_obj.type, 'nope')" "False" | 117 gdb_test "python print (gdb.types.has_field (class1_obj.type, 'nope'))" "False" |
| 118 | 118 |
| 119 # test has_field in base class | 119 # test has_field in base class |
| 120 gdb_test_no_output "python subclass1_obj = gdb.parse_and_eval ('subclass1_obj')" | 120 gdb_test_no_output "python subclass1_obj = gdb.parse_and_eval ('subclass1_obj')" |
| 121 gdb_test "python print gdb.types.has_field (subclass1_obj.type, 'x')" "True" | 121 gdb_test "python print (gdb.types.has_field (subclass1_obj.type, 'x'))" "True" |
| 122 | 122 |
| 123 # test make_enum_dict | 123 # test make_enum_dict |
| 124 gdb_test_no_output "python enum1_obj = gdb.parse_and_eval ('enum1_obj')" | 124 gdb_test_no_output "python enum1_obj = gdb.parse_and_eval ('enum1_obj')" |
| 125 gdb_test_no_output "python enum1_dict = gdb.types.make_enum_dict (enum1_obj.type
)" | 125 gdb_test_no_output "python enum1_dict = gdb.types.make_enum_dict (enum1_obj.type
)" |
| 126 gdb_test_no_output "python enum1_list = enum1_dict.items ()" | 126 gdb_test_no_output "python enum1_list = sorted (enum1_dict.items ())" |
| 127 gdb_test_no_output "python enum1_list.sort ()" | 127 gdb_test "python print (enum1_list)" {\[\('A', 0L?\), \('B', 1L?\), \('C', 2L?\)
\]} |
| 128 gdb_test "python print enum1_list" {\[\('A', 0L\), \('B', 1L\), \('C', 2L\)\]} | |
| 129 | 128 |
| 130 # test deep_items | 129 # test deep_items |
| 131 gdb_test_no_output "python struct_a = gdb.lookup_type ('struct A')" | 130 gdb_test_no_output "python struct_a = gdb.lookup_type ('struct A')" |
| 132 gdb_test "python print struct_a.keys ()" {\['a', '', 'c', ''\]} | 131 gdb_test "python print (struct_a.keys ())" {\['a', '', 'c', ''\]} |
| 133 gdb_test "python print \[k for k,v in gdb.types.deep_items(struct_a)\]" {\['a',
'b0', 'b1', 'bb0', 'bb1', 'bbb0', 'bbb1', 'c', 'dd0', 'dd1', 'd2', 'd3'\]} | 132 gdb_test "python print (\[k for k,v in gdb.types.deep_items(struct_a)\])" {\['a'
, 'b0', 'b1', 'bb0', 'bb1', 'bbb0', 'bbb1', 'c', 'dd0', 'dd1', 'd2', 'd3'\]} |
| OLD | NEW |