+2012-12-10 Paul Koning <paul_koning@dell.com>
+
+ * gdb.base/charset.exp: Change print syntax for Python 3
+ compatibility.
+ * gdb.python/py-block.exp: Ditto.
+ * gdb.python/py-breakpoint.exp: Ditto.
+ * gdb.python/py-cmd.exp: Ditto.
+ * gdb.python/py-events.py: Ditto.
+ * gdb.python/py-finish-breakpoint.py: Ditto.
+ * gdb.python/py-finish-breakpoint2.exp: Ditto.
+ * gdb.python/py-finish-breakpoint2.py: Ditto.
+ * gdb.python/py-frame-inline.exp: Ditto.
+ * gdb.python/py-frame.exp: Ditto.
+ * gdb.python/py-infthread.exp: Ditto.
+ * gdb.python/py-objfile.exp: Ditto.
+ * gdb.python/py-parameter.exp: Ditto.
+ * gdb.python/py-progspace.exp: Ditto.
+ * gdb.python/py-prompt.exp: Ditto.
+ * gdb.python/py-symbol.exp: Ditto.
+ * gdb.python/py-symtab.exp: Ditto.
+ * gdb.python/py-template.exp: Ditto.
+ * gdb.python/py-value-cc.exp: Ditto.
+ * gdb.python/python.exp: Ditto.
+ * gdb.python/source2.py: Ditto.
+ * gdb.python/lib-types.exp: Change print syntax for Python 3
+ compatibility.
+ Use sorted() function rather than sort() method.
+ Accept either int or long values for enum values.
+ * gdb.python/py-events.exp: Use exec(open(...).read()) instead of
+ execfile for Python 3 compatibility.
+ * gdb.python/py-evsignal.exp: Ditto.
+ * gdb.python/py-evthreads.exp: Ditto.
+ * gdb.python/py-mi.exp: Ditto.
+ * gdb.python/py-pp-maint.exp: Ditto.
+ * gdb.python/py-prettyprint.exp: Ditto.
+ * gdb.python/py-finish-breakpoint.exp: Change print syntax for
+ Python 3 compatibility.
+ Skip tests for Python 2.4.
+ * gdb.python/py-inferior.exp: Change print syntax for
+ Python 3 compatibility.
+ Use byte string rather than character string in memory write test
+ if Python 3.
+ * gdb.python/py-pp-maint.py: Change class declarations to "new
+ class" syntax.
+ * gdb.python/py-prettyprint.py: Change iterator class to generator
+ function for Python 3 compatibility.
+ Make all classes "new style".
+ Fix indentation issue and stray semicolon.
+ * gdb.python/py-shared.expChange print syntax for Python 3
+ compatibility.
+ Define "long" if Python 3.
+ * gdb.python/py-type.exp: Change print syntax for Python 3
+ compatibility.
+ Accept either int or long values for enum values.
+ * gdb.python/py-value.exp: Change print syntax for Python 3
+ compatibility.
+ Skip "long" and "unicode" tests if Python 3.
+ Accept either "type" or "class" in type checks.
+ * lib/gdb.exp (gdb_py_is_py3k): New flag set if Python 3.
+ (gdb_py_is_py24): New flag set if Python 2.4 or 2.5.
+
2012-12-10 Tom Tromey <tromey@redhat.com>
* gdb.dwarf2/implptr-64bit.exp: Run tests with two CUs as well.
if {$ucs2_ok} {
set go 1
- gdb_test_multiple "python print 'hello, world!'" \
+ gdb_test_multiple "python print ('hello, world!')" \
"verify python support for charset tests" {
-re "not supported.*$gdb_prompt $" {
unsupported "python support is disabled"
gdb_test "print u\"abcdef\"" " = u\"abcdef\"" \
"set up for python printing of utf-16 string"
- gdb_test "python print gdb.history(0).string()" "abcdef" \
+ gdb_test "python print (gdb.history(0).string())" "abcdef" \
"extract utf-16 string using python"
}
}
# test get_basic_type const stripping
gdb_test_no_output "python const_class1_obj = gdb.parse_and_eval ('const_class1_obj')"
gdb_test_no_output "python basic_type_const_class1_obj = gdb.types.get_basic_type (const_class1_obj.type)"
-gdb_test "python print str (const_class1_obj.type)" "const class1"
+gdb_test "python print (str (const_class1_obj.type))" "const class1"
set test "const stripping"
-gdb_test_multiple "python print str (basic_type_const_class1_obj)" $test {
+gdb_test_multiple "python print (str (basic_type_const_class1_obj))" $test {
-re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" {
pass $test
}
# test get_basic_type volatile stripping
gdb_test_no_output "python volatile_class1_obj = gdb.parse_and_eval ('volatile_class1_obj')"
gdb_test_no_output "python basic_type_volatile_class1_obj = gdb.types.get_basic_type (volatile_class1_obj.type)"
-gdb_test "python print str (volatile_class1_obj.type)" "volatile class1"
+gdb_test "python print (str (volatile_class1_obj.type))" "volatile class1"
set test "volatile stripping"
-gdb_test_multiple "python print str (basic_type_volatile_class1_obj)" $test {
+gdb_test_multiple "python print (str (basic_type_volatile_class1_obj))" $test {
-re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" {
pass $test
}
# test get_basic_type volatile+const stripping
gdb_test_no_output "python const_volatile_class1_obj = gdb.parse_and_eval ('const_volatile_class1_obj')"
gdb_test_no_output "python basic_type_const_volatile_class1_obj = gdb.types.get_basic_type (const_volatile_class1_obj.type)"
-gdb_test "python print str (const_volatile_class1_obj.type)" "const volatile class1"
+gdb_test "python print (str (const_volatile_class1_obj.type))" "const volatile class1"
set test "volatile+const stripping"
-gdb_test_multiple "python print str (basic_type_const_volatile_class1_obj)" $test {
+gdb_test_multiple "python print (str (basic_type_const_volatile_class1_obj))" $test {
-re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" {
pass $test
}
# test get_basic_type typedef stripping
gdb_test_no_output "python typedef_class1_obj = gdb.parse_and_eval ('typedef_class1_obj')"
gdb_test_no_output "python basic_type_typedef_class1_obj = gdb.types.get_basic_type (typedef_class1_obj.type)"
-gdb_test "python print str (typedef_class1_obj.type)" "typedef_class1"
+gdb_test "python print (str (typedef_class1_obj.type))" "typedef_class1"
set test "typedef stripping"
-gdb_test_multiple "python print str (basic_type_typedef_class1_obj)" $test {
+gdb_test_multiple "python print (str (basic_type_typedef_class1_obj))" $test {
-re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" {
pass $test
}
# test get_basic_type reference stripping
gdb_test_no_output "python class1_ref_obj = gdb.parse_and_eval ('class1_ref_obj')"
gdb_test_no_output "python basic_type_class1_ref_obj = gdb.types.get_basic_type (class1_ref_obj.type)"
-gdb_test "python print str (class1_ref_obj.type)" "class1 &"
+gdb_test "python print (str (class1_ref_obj.type))" "class1 &"
set test "reference stripping"
-gdb_test_multiple "python print str (basic_type_class1_ref_obj)" $test {
+gdb_test_multiple "python print (str (basic_type_class1_ref_obj))" $test {
-re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" {
pass $test
}
# test nested typedef stripping
gdb_test_no_output "python typedef_const_typedef_class1_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_obj')"
gdb_test_no_output "python basic_type_typedef_const_typedef_class1_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_obj.type)"
-gdb_test "python print str (typedef_class1_obj.type)" "typedef_class1"
+gdb_test "python print (str (typedef_class1_obj.type))" "typedef_class1"
set test "nested typedef stripping"
-gdb_test_multiple "python print str (basic_type_typedef_const_typedef_class1_obj)" $test {
+gdb_test_multiple "python print (str (basic_type_typedef_const_typedef_class1_obj))" $test {
-re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" {
pass $test
}
# test nested typedef/reference stripping
gdb_test_no_output "python typedef_const_typedef_class1_ref_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_ref_obj')"
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)"
-gdb_test "python print str (typedef_const_typedef_class1_ref_obj.type)" "const typedef_const_typedef_class1_ref"
+gdb_test "python print (str (typedef_const_typedef_class1_ref_obj.type))" "const typedef_const_typedef_class1_ref"
set test "nested typedef/ref stripping"
-gdb_test_multiple "python print str (basic_type_typedef_const_typedef_class1_ref_obj)" $test {
+gdb_test_multiple "python print (str (basic_type_typedef_const_typedef_class1_ref_obj))" $test {
-re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" {
pass $test
}
# test has_field on simple class
gdb_test_no_output "python class1_obj = gdb.parse_and_eval ('class1_obj')"
-gdb_test "python print gdb.types.has_field (class1_obj.type, 'x')" "True"
-gdb_test "python print gdb.types.has_field (class1_obj.type, 'nope')" "False"
+gdb_test "python print (gdb.types.has_field (class1_obj.type, 'x'))" "True"
+gdb_test "python print (gdb.types.has_field (class1_obj.type, 'nope'))" "False"
# test has_field in base class
gdb_test_no_output "python subclass1_obj = gdb.parse_and_eval ('subclass1_obj')"
-gdb_test "python print gdb.types.has_field (subclass1_obj.type, 'x')" "True"
+gdb_test "python print (gdb.types.has_field (subclass1_obj.type, 'x'))" "True"
# test make_enum_dict
gdb_test_no_output "python enum1_obj = gdb.parse_and_eval ('enum1_obj')"
gdb_test_no_output "python enum1_dict = gdb.types.make_enum_dict (enum1_obj.type)"
-gdb_test_no_output "python enum1_list = enum1_dict.items ()"
-gdb_test_no_output "python enum1_list.sort ()"
-gdb_test "python print enum1_list" {\[\('A', 0L\), \('B', 1L\), \('C', 2L\)\]}
+gdb_test_no_output "python enum1_list = sorted (enum1_dict.items ())"
+gdb_test "python print (enum1_list)" {\[\('A', 0L?\), \('B', 1L?\), \('C', 2L?\)\]}
# test deep_items
gdb_test_no_output "python struct_a = gdb.lookup_type ('struct A')"
-gdb_test "python print struct_a.keys ()" {\['a', '', 'c', ''\]}
-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'\]}
+gdb_test "python print (struct_a.keys ())" {\['a', '', 'c', ''\]}
+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'\]}
# Test initial innermost block.
gdb_py_test_silent_cmd "python frame = gdb.selected_frame()" "Get Frame" 0
gdb_py_test_silent_cmd "python block = frame.block()" "Get block" 0
-gdb_test "python print block" "<gdb.Block object at $hex>" "Check block not None"
-gdb_test "python print block.function" "None" "First anonymous block"
-gdb_test "python print block.start" "${decimal}" "Check start not None"
-gdb_test "python print block.end" "${decimal}" "Check end not None"
+gdb_test "python print (block)" "<gdb.Block object at $hex>" "Check block not None"
+gdb_test "python print (block.function)" "None" "First anonymous block"
+gdb_test "python print (block.start)" "${decimal}" "Check start not None"
+gdb_test "python print (block.end)" "${decimal}" "Check end not None"
# Test global/static blocks
gdb_py_test_silent_cmd "python frame = gdb.selected_frame()" "Get Frame" 0
gdb_py_test_silent_cmd "python block = frame.block()" "Get block" 0
-gdb_test "python print block.is_global" "False" "Not a global block"
-gdb_test "python print block.is_static" "False" "Not a static block"
+gdb_test "python print (block.is_global)" "False" "Not a global block"
+gdb_test "python print (block.is_static)" "False" "Not a static block"
gdb_py_test_silent_cmd "python gblock = block.global_block" "Get block" 1
gdb_py_test_silent_cmd "python sblock = block.static_block" "Get block" 1
-gdb_test "python print gblock.is_global" "True" "Is the global block"
-gdb_test "python print sblock.is_static" "True" "Is the static block"
+gdb_test "python print (gblock.is_global)" "True" "Is the global block"
+gdb_test "python print (sblock.is_static)" "True" "Is the static block"
# Move up superblock(s) until we reach function block_func.
gdb_test_no_output "python block = block.superblock" "Get superblock"
-gdb_test "python print block.function" "None" "Second anonymous block"
+gdb_test "python print (block.function)" "None" "Second anonymous block"
gdb_test_no_output "python block = block.superblock" "Get superblock 2"
-gdb_test "python print block.function" "block_func" \
+gdb_test "python print (block.function)" "block_func" \
"Print superblock 2 function"
# Switch frames, then test for main block.
gdb_test "up" ".*"
gdb_py_test_silent_cmd "python frame = gdb.selected_frame()" "Get Frame 2" 0
gdb_py_test_silent_cmd "python block = frame.block()" "Get Frame 2's block" 0
-gdb_test "python print block" "<gdb.Block object at $hex>" \
+gdb_test "python print (block)" "<gdb.Block object at $hex>" \
"Check Frame 2's block not None"
-gdb_test "python print block.function" "main" "main block"
+gdb_test "python print (block.function)" "main" "main block"
# Test Block is_valid. This must always be the last test in this
gdb_py_test_silent_cmd "python frame = gdb.selected_frame()" "Get Frame" 0
gdb_py_test_silent_cmd "python block = frame.block()" "Get Frame block" 0
gdb_py_test_silent_cmd "python block_iter = iter (block)" "Get Frame block" 0
-gdb_test "python print block.is_valid()" "True" \
+gdb_test "python print (block.is_valid())" "True" \
"Check block validity"
-gdb_test "python print block_iter.is_valid()" "True" \
+gdb_test "python print (block_iter.is_valid())" "True" \
"Check block validity"
gdb_unload
-gdb_test "python print block.is_valid()" "False" \
+gdb_test "python print (block.is_valid())" "False" \
"Check block validity"
-gdb_test "python print block_iter.is_valid()" "False" \
+gdb_test "python print (block_iter.is_valid())" "False" \
"Check block validity"
# Initially there should be one breakpoint: main.
gdb_py_test_silent_cmd "python blist = gdb.breakpoints()" "Get Breakpoint List" 0
-gdb_test "python print blist\[0\]" "<gdb.Breakpoint object at $hex>" "Check obj exists"
-gdb_test "python print blist\[0\].location" "main." "Check breakpoint location"
+gdb_test "python print (blist\[0\])" "<gdb.Breakpoint object at $hex>" "Check obj exists"
+gdb_test "python print (blist\[0\].location)" "main." "Check breakpoint location"
set mult_line [gdb_get_line_number "Break at multiply."]
gdb_breakpoint ${mult_line}
# Check that the Python breakpoint code noted the addition of a
# breakpoint "behind the scenes".
gdb_py_test_silent_cmd "python blist = gdb.breakpoints()" "Get Breakpoint List" 0
-gdb_test "python print len(blist)" "2" "Check for two breakpoints"
-gdb_test "python print blist\[0\]" "<gdb.Breakpoint object at $hex>" "Check obj exists"
-gdb_test "python print blist\[0\].location" "main." "Check breakpoint location"
-gdb_test "python print blist\[1\]" "<gdb.Breakpoint object at $hex>" "Check obj exists"
+gdb_test "python print (len(blist))" "2" "Check for two breakpoints"
+gdb_test "python print (blist\[0\])" "<gdb.Breakpoint object at $hex>" "Check obj exists"
+gdb_test "python print (blist\[0\].location)" "main." "Check breakpoint location"
+gdb_test "python print (blist\[1\])" "<gdb.Breakpoint object at $hex>" "Check obj exists"
-gdb_test "python print blist\[1\].location" "py-breakpoint\.c:${mult_line}*" \
+gdb_test "python print (blist\[1\].location)" "py-breakpoint\.c:${mult_line}*" \
"Check breakpoint location"
# Check hit and ignore counts.
-gdb_test "python print blist\[1\].hit_count" "1" "Check breakpoint hit count"
+gdb_test "python print (blist\[1\].hit_count)" "1" "Check breakpoint hit count"
gdb_py_test_silent_cmd "python blist\[1\].ignore_count = 4" "Set breakpoint hit count" 0
gdb_continue_to_breakpoint "Break at multiply."
-gdb_test "python print blist\[1\].hit_count" "6" "Check breakpoint hit count"
+gdb_test "python print (blist\[1\].hit_count)" "6" "Check breakpoint hit count"
gdb_test "print result" " = 545" "Check expected variable result after 6 iterations"
# Test breakpoint is enabled and disabled correctly..
gdb_breakpoint [gdb_get_line_number "Break at add."]
gdb_continue_to_breakpoint "Break at add."
-gdb_test "python print blist\[1\].enabled" "True" "Check breakpoint enabled."
+gdb_test "python print (blist\[1\].enabled)" "True" "Check breakpoint enabled."
gdb_py_test_silent_cmd "python blist\[1\].enabled = False" "Set breakpoint disabled." 0
gdb_continue_to_breakpoint "Break at add."
gdb_py_test_silent_cmd "python blist\[1\].enabled = True" "Set breakpoint enabled." 0
# Test other getters and setters.
gdb_py_test_silent_cmd "python blist = gdb.breakpoints()" "Get Breakpoint List" 0
-gdb_test "python print blist\[1\].thread" "None" "Check breakpoint thread"
-gdb_test "python print blist\[1\].type == gdb.BP_BREAKPOINT" "True" "Check breakpoint type"
-gdb_test "python print blist\[0\].number" "1" "Check breakpoint number"
-gdb_test "python print blist\[1\].number" "2" "Check breakpoint number"
-gdb_test "python print blist\[2\].number" "3" "Check breakpoint number"
+gdb_test "python print (blist\[1\].thread)" "None" "Check breakpoint thread"
+gdb_test "python print (blist\[1\].type == gdb.BP_BREAKPOINT)" "True" "Check breakpoint type"
+gdb_test "python print (blist\[0\].number)" "1" "Check breakpoint number"
+gdb_test "python print (blist\[1\].number)" "2" "Check breakpoint number"
+gdb_test "python print (blist\[2\].number)" "3" "Check breakpoint number"
# Start with a fresh gdb.
clean_restart ${testfile}
gdb_py_test_silent_cmd "python dp1 = gdb.Breakpoint (\"$deltst_location\")" "Set breakpoint" 0
gdb_breakpoint [gdb_get_line_number "Break at end."]
gdb_py_test_silent_cmd "python del_list = gdb.breakpoints()" "Get Breakpoint List" 0
-gdb_test "python print len(del_list)" "3" "Number of breakpoints before delete"
+gdb_test "python print (len(del_list))" "3" "Number of breakpoints before delete"
gdb_continue_to_breakpoint "Break at multiply." ".*/$srcfile:$deltst_location.*"
gdb_py_test_silent_cmd "python dp1.delete()" "Delete Breakpoint" 0
-gdb_test "python print dp1.number" "RuntimeError: Breakpoint 2 is invalid.*" "Check breakpoint invalidated"
+gdb_test "python print (dp1.number)" "RuntimeError: Breakpoint 2 is invalid.*" "Check breakpoint invalidated"
gdb_py_test_silent_cmd "python del_list = gdb.breakpoints()" "Get Breakpoint List" 0
-gdb_test "python print len(del_list)" "2" "Number of breakpoints after delete"
+gdb_test "python print (len(del_list))" "2" "Number of breakpoints after delete"
gdb_continue_to_breakpoint "Break at end." ".*/$srcfile:$end_location.*"
gdb_py_test_silent_cmd "python bp1 = gdb.Breakpoint (\"$bp_location1\")" "Set breakpoint" 0
gdb_continue_to_breakpoint "Break at multiply."
gdb_py_test_silent_cmd "python bp1.condition = \"i == 5\"" "Set breakpoint" 0
-gdb_test "python print bp1.condition" "i == 5" "Test conditional has been set"
+gdb_test "python print (bp1.condition)" "i == 5" "Test conditional has been set"
gdb_continue_to_breakpoint "Break at multiply."
gdb_test "print i" "5" "Test conditional breakpoint stopped after five iterations"
gdb_py_test_silent_cmd "python bp1.condition = None" "Clear condition" 0
-gdb_test "python print bp1.condition" "None" "Test conditional read"
+gdb_test "python print (bp1.condition)" "None" "Test conditional read"
gdb_continue_to_breakpoint "Break at multiply."
gdb_test "print i" "6" "Test breakpoint stopped after six iterations"
gdb_test "end"
gdb_py_test_silent_cmd "python blist = gdb.breakpoints()" "Get Breakpoint List" 0
-gdb_test "python print blist\[len(blist)-1\].commands" "print \"Command for breakpoint has been executed.\".*print result"
+gdb_test "python print (blist\[len(blist)-1\].commands)" "print \"Command for breakpoint has been executed.\".*print result"
# Start with a fresh gdb.
clean_restart ${testfile}
set ibp_location [gdb_get_line_number "Break at multiply."]
gdb_py_test_silent_cmd "python ibp = gdb.Breakpoint(\"$ibp_location\", internal=False)" "Set invisible breakpoint" 0
gdb_py_test_silent_cmd "python ilist = gdb.breakpoints()" "Get Breakpoint List" 0
-gdb_test "python print ilist\[0\]" "<gdb.Breakpoint object at $hex>" "Check invisible bp obj exists"
-gdb_test "python print ilist\[0\].location" "py-breakpoint\.c:$ibp_location*" "Check breakpoint location"
-gdb_test "python print ilist\[0\].visible" "True" "Check breakpoint visibility"
+gdb_test "python print (ilist\[0\])" "<gdb.Breakpoint object at $hex>" "Check invisible bp obj exists"
+gdb_test "python print (ilist\[0\].location)" "py-breakpoint\.c:$ibp_location*" "Check breakpoint location"
+gdb_test "python print (ilist\[0\].visible)" "True" "Check breakpoint visibility"
gdb_test "info breakpoints" "py-breakpoint\.c:$ibp_location.*" "Check info breakpoints shows visible breakpoints"
delete_breakpoints
gdb_py_test_silent_cmd "python ibp = gdb.Breakpoint(\"$ibp_location\", internal=True)" "Set invisible breakpoint" 0
gdb_py_test_silent_cmd "python ilist = gdb.breakpoints()" "Get Breakpoint List" 0
-gdb_test "python print ilist\[0\]" "<gdb.Breakpoint object at $hex>" "Check invisible bp obj exists"
-gdb_test "python print ilist\[0\].location" "py-breakpoint\.c:$ibp_location*" "Check breakpoint location"
-gdb_test "python print ilist\[0\].visible" "False" "Check breakpoint visibility"
+gdb_test "python print (ilist\[0\])" "<gdb.Breakpoint object at $hex>" "Check invisible bp obj exists"
+gdb_test "python print (ilist\[0\].location)" "py-breakpoint\.c:$ibp_location*" "Check breakpoint location"
+gdb_test "python print (ilist\[0\].visible)" "False" "Check breakpoint visibility"
gdb_test "info breakpoints" "No breakpoints or watchpoints.*" "Check info breakpoints does not show invisible breakpoints"
gdb_test "maint info breakpoints" "py-breakpoint\.c:$ibp_location.*" "Check maint info breakpoints shows invisible breakpoints"
gdb_py_test_silent_cmd "python never_eval_bp1 = bp_also_eval(\"$end_location\")" "Set breakpoint" 0
gdb_continue_to_breakpoint "Break at multiply." ".*/$srcfile:$bp_location2.*"
gdb_test "print i" "3" "Check inferior value matches python accounting"
-gdb_test "python print eval_bp1.inf_i" "3" "Check python accounting matches inferior"
-gdb_test "python print also_eval_bp1.count" "4" \
+gdb_test "python print (eval_bp1.inf_i)" "3" "Check python accounting matches inferior"
+gdb_test "python print (also_eval_bp1.count)" "4" \
"Check non firing same-location breakpoint eval function was also called at each stop."
-gdb_test "python print eval_bp1.count" "4" \
+gdb_test "python print (eval_bp1.count)" "4" \
"Check non firing same-location breakpoint eval function was also called at each stop."
delete_breakpoints
delete_breakpoints
gdb_breakpoint [gdb_get_line_number "Break at multiply."]
gdb_py_test_silent_cmd "python check_eval = bp_eval(\"$bp_location2\")" "Set breakpoint" 0
-gdb_test "python print check_eval.count" "0" \
+gdb_test "python print (check_eval.count)" "0" \
"Test that evaluate function has not been yet executed (ie count = 0)"
gdb_continue_to_breakpoint "Break at multiply." ".*/$srcfile:$bp_location2.*"
-gdb_test "python print check_eval.count" "1" \
+gdb_test "python print (check_eval.count)" "1" \
"Test that evaluate function is run when location also has normal bp"
gdb_py_test_multiple "Sub-class a watchpoint" \
delete_breakpoints
gdb_py_test_silent_cmd "python wp1 = wp_eval (\"result\", type=gdb.BP_WATCHPOINT, wp_class=gdb.WP_WRITE)" "Set watchpoint" 0
gdb_test "continue" ".*\[Ww\]atchpoint.*result.*Old value =.*New value = 788.*" "Test watchpoint write"
-gdb_test "python print never_eval_bp1.count" "0" \
+gdb_test "python print (never_eval_bp1.count)" "0" \
"Check that this unrelated breakpoints eval function was never called."
" def __init__ (self):" "" \
" super (test_cmd, self).__init__ (\"test_cmd\", gdb.COMMAND_OBSCURE)" "" \
" def invoke (self, arg, from_tty):" "" \
- " print \"test_cmd output, arg = %s\" % arg" "" \
+ " print (\"test_cmd output, arg = %s\" % arg)" "" \
"test_cmd ()" "" \
"end" ""
" def __init__ (self):" "" \
" super (prefix_cmd, self).__init__ (\"prefix_cmd\", gdb.COMMAND_OBSCURE, gdb.COMPLETE_NONE, True)" "" \
" def invoke (self, arg, from_tty):" "" \
- " print \"prefix_cmd output, arg = %s\" % arg" "" \
+ " print (\"prefix_cmd output, arg = %s\" % arg)" "" \
"prefix_cmd ()" "" \
"end" ""
" def __init__ (self):" "" \
" super (subcmd, self).__init__ (\"prefix_cmd subcmd\", gdb.COMMAND_OBSCURE)" "" \
" def invoke (self, arg, from_tty):" "" \
- " print \"subcmd output, arg = %s\" % arg" "" \
+ " print (\"subcmd output, arg = %s\" % arg)" "" \
"subcmd ()" "" \
"end" ""
" def __init__ (self):" "" \
" super (prefix_cmd2, self).__init__ (\"prefix_cmd2\", gdb.COMMAND_OBSCURE, prefix = True, completer_class = gdb.COMPLETE_FILENAME)" "" \
" def invoke (self, arg, from_tty):" "" \
- " print \"prefix_cmd2 output, arg = %s\" % arg" "" \
+ " print (\"prefix_cmd2 output, arg = %s\" % arg)" "" \
"prefix_cmd2 ()" "" \
"end" ""
" def __init__ (self):" "" \
" super (subcmd, self).__init__ (\"prefix_cmd2 subcmd\", gdb.COMMAND_OBSCURE)" "" \
" def invoke (self, arg, from_tty):" "" \
- " print \"subcmd output, arg = %s\" % arg" "" \
+ " print (\"subcmd output, arg = %s\" % arg)" "" \
"subcmd ()" "" \
"end" ""
" def __init__ (self):" "" \
" super (newsubcmd, self).__init__ (\"info newsubcmd\", gdb.COMMAND_OBSCURE)" "" \
" def invoke (self, arg, from_tty):" "" \
- " print \"newsubcmd output, arg = %s\" % arg" "" \
+ " print (\"newsubcmd output, arg = %s\" % arg)" "" \
"newsubcmd ()" "" \
"end" ""
# Test gdb.string_to_argv.
-gdb_test "python print gdb.string_to_argv (\"1 2 3\")" \
+gdb_test "python print (gdb.string_to_argv (\"1 2 3\"))" \
{\['1', '2', '3'\]} \
"string_to_argv (\"1 2 3\")"
-gdb_test "python print gdb.string_to_argv (\"'1 2' 3\")" \
+gdb_test "python print (gdb.string_to_argv (\"'1 2' 3\"))" \
{\['1 2', '3'\]} \
"string_to_argv (\"'1 2' 3\")"
-gdb_test "python print gdb.string_to_argv ('\"1 2\" 3')" \
+gdb_test "python print (gdb.string_to_argv ('\"1 2\" 3'))" \
{\['1 2', '3'\]} \
"string_to_argv ('\"1 2\" 3')"
-gdb_test "python print gdb.string_to_argv ('1\\ 2 3')" \
+gdb_test "python print (gdb.string_to_argv ('1\\ 2 3'))" \
{\['1 2', '3'\]} \
"string_to_argv ('1\\ 2 3')"
" def __init__ (self):" "" \
" super (test_help, self).__init__ (\"test_help\", gdb.COMMAND_USER)" "" \
" def invoke (self, arg, from_tty):" "" \
- " print \"test_cmd output, arg = %s\" % arg" "" \
+ " print (\"test_cmd output, arg = %s\" % arg)" "" \
"test_help ()" "" \
"end" ""
if { [skip_python_tests] } { continue }
-gdb_test_no_output "python execfile ('${pyfile}')" ""
+gdb_test_no_output "python exec (open ('${pyfile}').read ())" ""
gdb_test "Test_Newobj_Events" "New ObjectFile Event tester registered." "Register new objfile event handler"
def signal_stop_handler (event):
if (isinstance (event, gdb.StopEvent)):
- print "event type: stop"
+ print ("event type: stop")
if (isinstance (event, gdb.SignalEvent)):
- print "stop reason: signal"
- print "stop signal: %s" % (event.stop_signal)
+ print ("stop reason: signal")
+ print ("stop signal: %s" % (event.stop_signal))
if ( event.inferior_thread is not None) :
- print "thread num: %s" % (event.inferior_thread.num);
+ print ("thread num: %s" % (event.inferior_thread.num))
def breakpoint_stop_handler (event):
if (isinstance (event, gdb.StopEvent)):
- print "event type: stop"
+ print ("event type: stop")
if (isinstance (event, gdb.BreakpointEvent)):
- print "stop reason: breakpoint"
- print "first breakpoint number: %s" % (event.breakpoint.number)
+ print ("stop reason: breakpoint")
+ print ("first breakpoint number: %s" % (event.breakpoint.number))
for bp in event.breakpoints:
- print "breakpoint number: %s" % (bp.number)
+ print ("breakpoint number: %s" % (bp.number))
if ( event.inferior_thread is not None) :
- print "thread num: %s" % (event.inferior_thread.num);
+ print ("thread num: %s" % (event.inferior_thread.num))
else:
- print "all threads stopped"
+ print ("all threads stopped")
def exit_handler (event):
if (isinstance (event, gdb.ExitedEvent)):
- print "event type: exit"
- print "exit code: %d" % (event.exit_code)
- print "exit inf: %d" % (event.inferior.num)
- print "dir ok: %s" % str('exit_code' in dir(event))
+ print ("event type: exit")
+ print ("exit code: %d" % (event.exit_code))
+ print ("exit inf: %d" % (event.inferior.num))
+ print ("dir ok: %s" % str('exit_code' in dir(event)))
def continue_handler (event):
if (isinstance (event, gdb.ContinueEvent)):
- print "event type: continue"
+ print ("event type: continue")
if ( event.inferior_thread is not None) :
- print "thread num: %s" % (event.inferior_thread.num);
+ print ("thread num: %s" % (event.inferior_thread.num))
def new_objfile_handler (event):
if (isinstance (event, gdb.NewObjFileEvent)):
- print "event type: new_objfile"
+ print ("event type: new_objfile")
if (event.new_objfile is not None):
- print "new objfile name: %s" % (event.new_objfile.filename)
+ print ("new objfile name: %s" % (event.new_objfile.filename))
else:
- print "new objfile is None"
+ print ("new objfile is None")
class test_events (gdb.Command):
"""Test events."""
gdb.events.stop.connect (breakpoint_stop_handler)
gdb.events.exited.connect (exit_handler)
gdb.events.cont.connect (continue_handler)
- print "Event testers registered."
+ print ("Event testers registered.")
test_events ()
def invoke (self, arg, from_tty):
gdb.events.new_objfile.connect (new_objfile_handler)
- print "New ObjectFile Event tester registered."
+ print ("New ObjectFile Event tester registered.")
test_newobj_events ()
if { [skip_python_tests] } { continue }
-gdb_test_no_output "python execfile ('${pyfile}')" ""
+gdb_test_no_output "python exec (open ('${pyfile}').read ())" ""
gdb_test "Test_Events" "Event testers registered."
gdb_test_no_output "set non-stop on"
if { [skip_python_tests] } { continue }
-gdb_test_no_output "python execfile ('${pyfile}')" ""
+gdb_test_no_output "python exec (open ('${pyfile}').read ())" ""
gdb_test "Test_Events" "Event testers registered."
gdb_test_no_output "set non-stop on"
load_lib gdb-python.exp
+if { $gdb_py_is_py24 == 1 } {
+ # Python 2.4, 2.5 do not support the "ValueError as e" syntax used in
+ # the py-finish-breakpoint.py script.
+ untested py-finish-breakpoint.exp
+ return 0
+}
+
set libfile "py-events-shlib"
set libsrc $srcdir/$subdir/$libfile.c
set lib_sl [standard_output_file $libfile-nodebug.so]
"Temporary breakpoint.*" "set FinishBreakpoint with default frame value"
gdb_test "python finishbp = MyFinishBreakpoint (gdb.parse_and_eval ('a'), gdb.newest_frame ())" \
"Temporary breakpoint.*" "set FinishBreakpoint"
-gdb_test "python print finishbp.return_value" "None.*" \
+gdb_test "python print (finishbp.return_value)" "None.*" \
"check return_value at init"
# check normal bp hit
gdb_test "continue" "MyFinishBreakpoint stop with.*return_value is: -5.*#0.*increase.*" \
"check MyFinishBreakpoint hit"
-gdb_test "python print finishbp.return_value" "-5.*" "check return_value"
+gdb_test "python print (finishbp.return_value)" "-5.*" "check return_value"
-gdb_test "python print finishbp_default.hit_count" "1.*" "check finishBP on default frame has been hit"
-gdb_test "python print finishbp.is_valid()" "False.*"\
+gdb_test "python print (finishbp_default.hit_count)" "1.*" "check finishBP on default frame has been hit"
+gdb_test "python print (finishbp.is_valid())" "False.*"\
"ensure that finish bp is invalid afer normal hit"
# check FinishBreakpoint in main no allowed
"SimpleFinishBreakpoint init" \
"set finish breakpoint"
gdb_test "continue" "SimpleFinishBreakpoint stop.*" "check FinishBreakpoint hit"
-gdb_test "python print finishBP.return_value" "None" "check return value without debug symbol"
+gdb_test "python print (finishBP.return_value)" "None" "check return value without debug symbol"
#
# Test FinishBreakpoint in function returned by longjmp
"set BP after the jump"
gdb_test "continue" "SimpleFinishBreakpoint out of scope.*" \
"check FinishBP out of scope notification"
-gdb_test "python print finishbp.is_valid()" "False.*"\
+gdb_test "python print (finishbp.is_valid())" "False.*"\
"ensure that finish bp is invalid afer out of scope notification"
#
# This file is part of the GDB testsuite. It tests python Finish
# Breakpoints.
-
+
class MyFinishBreakpoint (gdb.FinishBreakpoint):
- def __init__(self, val, frame):
- gdb.FinishBreakpoint.__init__ (self, frame)
- print "MyFinishBreakpoint init"
- self.val = val
-
- def stop(self):
- print "MyFinishBreakpoint stop with %d" % int (self.val.dereference ())
- print "return_value is: %d" % int (self.return_value)
- gdb.execute ("where 1")
- return True
-
- def out_of_scope(self):
- print "MyFinishBreakpoint out of scope"
+ def __init__(self, val, frame):
+ gdb.FinishBreakpoint.__init__ (self, frame)
+ print ("MyFinishBreakpoint init")
+ self.val = val
+
+ def stop(self):
+ print ("MyFinishBreakpoint stop with %d" % int (self.val.dereference ()))
+ print ("return_value is: %d" % int (self.return_value))
+ gdb.execute ("where 1")
+ return True
+
+ def out_of_scope(self):
+ print ("MyFinishBreakpoint out of scope")
class TestBreakpoint(gdb.Breakpoint):
def __init__(self):
gdb.Breakpoint.__init__ (self, spec="test_1", internal=1)
self.silent = True
self.count = 0
- print "TestBreakpoint init"
+ print ("TestBreakpoint init")
def stop(self):
- self.count += 1
- try:
- TestFinishBreakpoint (gdb.newest_frame (), self.count)
+ self.count += 1
+ try:
+ TestFinishBreakpoint (gdb.newest_frame (), self.count)
except ValueError as e:
- print e
+ print (e)
return False
class TestFinishBreakpoint (gdb.FinishBreakpoint):
def __init__ (self, frame, count):
- self.count = count
+ self.count = count
gdb.FinishBreakpoint.__init__ (self, frame, internal=1)
def stop(self):
- print "-->", self.number
+ print ("-->", self.number)
if (self.count == 3):
- print "test stop: %d" % self.count
+ print ("test stop: %d" % self.count)
return True
else:
- print "test don't stop: %d" % self.count
+ print ("test don't stop: %d" % self.count)
return False
def out_of_scope(self):
- print "test didn't finish: %d" % self.count
+ print ("test didn't finish: %d" % self.count)
class TestExplicitBreakpoint(gdb.Breakpoint):
- def stop(self):
- try:
- SimpleFinishBreakpoint (gdb.newest_frame ())
- except ValueError as e:
- print e
- return False
+ def stop(self):
+ try:
+ SimpleFinishBreakpoint (gdb.newest_frame ())
+ except ValueError as e:
+ print (e)
+ return False
class SimpleFinishBreakpoint(gdb.FinishBreakpoint):
- def __init__(self, frame):
- gdb.FinishBreakpoint.__init__ (self, frame)
-
- print "SimpleFinishBreakpoint init"
-
- def stop(self):
- print "SimpleFinishBreakpoint stop"
- return True
-
- def out_of_scope(self):
- print "SimpleFinishBreakpoint out of scope"
+ def __init__(self, frame):
+ gdb.FinishBreakpoint.__init__ (self, frame)
+
+ print ("SimpleFinishBreakpoint init")
+
+ def stop(self):
+ print ("SimpleFinishBreakpoint stop" )
+ return True
+
+ def out_of_scope(self):
+ print ("SimpleFinishBreakpoint out of scope")
-print "Python script imported"
+print ("Python script imported")
gdb_breakpoint "throw_exception_1"
gdb_test "continue" "Breakpoint .*throw_exception_1.*" "run to exception 1"
-gdb_test "python print len(gdb.breakpoints())" "3" "check BP count"
+gdb_test "python print (len(gdb.breakpoints()))" "3" "check BP count"
gdb_test "python ExceptionFinishBreakpoint(gdb.newest_frame())" "init ExceptionFinishBreakpoint" "set FinishBP after the exception"
gdb_test "continue" ".*stopped at ExceptionFinishBreakpoint.*" "check FinishBreakpoint in catch()"
-gdb_test "python print len(gdb.breakpoints())" "3" "check finish BP removal"
+gdb_test "python print (len(gdb.breakpoints()))" "3" "check finish BP removal"
gdb_test "continue" ".*Breakpoint.* throw_exception_1.*" "continue to second exception"
gdb_test "python ExceptionFinishBreakpoint(gdb.newest_frame())" "init ExceptionFinishBreakpoint" "set FinishBP after the exception"
class ExceptionFinishBreakpoint(gdb.FinishBreakpoint):
def __init__(self, frame):
gdb.FinishBreakpoint.__init__ (self, frame, internal=1)
- self.silent = True;
- print "init ExceptionFinishBreakpoint"
+ self.silent = True
+ print ("init ExceptionFinishBreakpoint")
def stop(self):
- print "stopped at ExceptionFinishBreakpoint"
+ print ("stopped at ExceptionFinishBreakpoint")
return True
def out_of_scope(self):
- print "exception did not finish ..."
+ print ("exception did not finish ...")
-print "Python script imported"
+print ("Python script imported")
gdb_test "up" "#1 g .*"
-gdb_test "python print gdb.selected_frame().read_var('l')" "\r\n42"
+gdb_test "python print (gdb.selected_frame().read_var('l'))" "\r\n42"
gdb_py_test_silent_cmd "python bf1 = gdb.selected_frame ()" "get frame" 0
# First test that read_var is unaffected by PR 11036 changes.
-gdb_test "python print bf1.read_var(\"i\")" "\"stuff\"" "test i"
-gdb_test "python print bf1.read_var(\"f\")" "\"foo\"" "test f"
-gdb_test "python print bf1.read_var(\"b\")" "\"bar\"" "test b"
+gdb_test "python print (bf1.read_var(\"i\"))" "\"stuff\"" "test i"
+gdb_test "python print (bf1.read_var(\"f\"))" "\"foo\"" "test f"
+gdb_test "python print (bf1.read_var(\"b\"))" "\"bar\"" "test b"
# Test the read_var function in another block other than the current
# block (in this case, the super block). Test thar read_var is reading
# the correct variables of i and f but they are the correct value and type.
gdb_py_test_silent_cmd "python sb = bf1.block().superblock" "get superblock" 0
-gdb_test "python print bf1.read_var(\"i\", sb)" "1.1.*" "test i = 1.1"
-gdb_test "python print bf1.read_var(\"i\", sb).type" "double" "test double i"
-gdb_test "python print bf1.read_var(\"f\", sb)" "2.2.*" "test f = 2.2"
-gdb_test "python print bf1.read_var(\"f\", sb).type" "double" "test double f"
+gdb_test "python print (bf1.read_var(\"i\", sb))" "1.1.*" "test i = 1.1"
+gdb_test "python print (bf1.read_var(\"i\", sb).type)" "double" "test double i"
+gdb_test "python print (bf1.read_var(\"f\", sb))" "2.2.*" "test f = 2.2"
+gdb_test "python print (bf1.read_var(\"f\", sb).type)" "double" "test double f"
# And again test another outerblock, this time testing "i" is the
# correct value and type.
gdb_py_test_silent_cmd "python sb = sb.superblock" "get superblock" 0
-gdb_test "python print bf1.read_var(\"i\", sb)" "99" "test i = 99"
-gdb_test "python print bf1.read_var(\"i\", sb).type" "int" "test int i"
+gdb_test "python print (bf1.read_var(\"i\", sb))" "99" "test i = 99"
+gdb_test "python print (bf1.read_var(\"i\", sb).type)" "int" "test int i"
gdb_breakpoint "f2"
gdb_continue_to_breakpoint "breakpoint at f2"
gdb_py_test_silent_cmd "python f1 = gdb.selected_frame ()" "get second frame" 0
gdb_py_test_silent_cmd "python f0 = f1.newer ()" "get first frame" 0
-gdb_test "python print f1 == gdb.newest_frame()" False \
+gdb_test "python print (f1 == gdb.newest_frame())" False \
"selected frame -vs- newest frame"
-gdb_test "python print bframe == gdb.newest_frame()" True \
+gdb_test "python print (bframe == gdb.newest_frame())" True \
"newest frame -vs- newest frame"
-gdb_test "python print 'result =', f0 == f1" " = False" "test equality comparison (false)"
-gdb_test "python print 'result =', f0 == f0" " = True" "test equality comparison (true)"
-gdb_test "python print 'result =', f0 != f1" " = True" "test inequality comparison (true)"
-gdb_test "python print 'result =', f0 != f0" " = False" "test inequality comparison (false)"
-gdb_test "python print 'result =', f0.is_valid ()" " = True" "test Frame.is_valid"
-gdb_test "python print 'result =', f0.name ()" " = f2" "test Frame.name"
-gdb_test "python print 'result =', f0.type () == gdb.NORMAL_FRAME" " = True" "test Frame.type"
-gdb_test "python print 'result =', f0.unwind_stop_reason () == gdb.FRAME_UNWIND_NO_REASON" " = True" "test Frame.type"
-gdb_test "python print 'result =', gdb.frame_stop_reason_string (gdb.FRAME_UNWIND_INNER_ID)" " = previous frame inner to this frame \\(corrupt stack\\?\\)" "test gdb.frame_stop_reason_string"
-gdb_test "python print 'result =', f0.pc ()" " = \[0-9\]+" "test Frame.pc"
-gdb_test "python print 'result =', f0.older () == f1" " = True" "test Frame.older"
-gdb_test "python print 'result =', f1.newer () == f0" " = True" "test Frame.newer"
-gdb_test "python print 'result =', f0.read_var ('variable_which_surely_doesnt_exist')" \
+gdb_test "python print ('result = %s' % (f0 == f1))" " = False" "test equality comparison (false)"
+gdb_test "python print ('result = %s' % (f0 == f0))" " = True" "test equality comparison (true)"
+gdb_test "python print ('result = %s' % (f0 != f1))" " = True" "test inequality comparison (true)"
+gdb_test "python print ('result = %s' % (f0 != f0))" " = False" "test inequality comparison (false)"
+gdb_test "python print ('result = %s' % f0.is_valid ())" " = True" "test Frame.is_valid"
+gdb_test "python print ('result = %s' % f0.name ())" " = f2" "test Frame.name"
+gdb_test "python print ('result = %s' % (f0.type () == gdb.NORMAL_FRAME))" " = True" "test Frame.type"
+gdb_test "python print ('result = %s' % (f0.unwind_stop_reason () == gdb.FRAME_UNWIND_NO_REASON))" " = True" "test Frame.type"
+gdb_test "python print ('result = %s' % gdb.frame_stop_reason_string (gdb.FRAME_UNWIND_INNER_ID))" " = previous frame inner to this frame \\(corrupt stack\\?\\)" "test gdb.frame_stop_reason_string"
+gdb_test "python print ('result = %s' % f0.pc ())" " = \[0-9\]+" "test Frame.pc"
+gdb_test "python print ('result = %s' % (f0.older () == f1))" " = True" "test Frame.older"
+gdb_test "python print ('result = %s' % (f1.newer () == f0))" " = True" "test Frame.newer"
+gdb_test "python print ('result = %s' % f0.read_var ('variable_which_surely_doesnt_exist'))" \
"ValueError: Variable 'variable_which_surely_doesnt_exist' not found.*Error while executing Python code." \
"test Frame.read_var - error"
-gdb_test "python print 'result =', f0.read_var ('a')" " = 1" "test Frame.read_var - success"
+gdb_test "python print ('result = %s' % f0.read_var ('a'))" " = 1" "test Frame.read_var - success"
-gdb_test "python print 'result =', gdb.selected_frame () == f1" " = True" "test gdb.selected_frame"
+gdb_test "python print ('result = %s' % (gdb.selected_frame () == f1))" " = True" "test gdb.selected_frame"
# Test basic gdb.Inferior attributes and methods.
gdb_py_test_silent_cmd "python inferiors = gdb.inferiors ()" "get inferiors list" 1
-gdb_test "python print inferiors" "\\(<gdb.Inferior object at 0x\[\[:xdigit:\]\]+>,\\)" "verify inferiors list"
+gdb_test "python print (inferiors)" "\\(<gdb.Inferior object at 0x\[\[:xdigit:\]\]+>,\\)" "verify inferiors list"
gdb_py_test_silent_cmd "python i0 = inferiors\[0\]" "get first inferior" 0
-gdb_test "python print 'result =', i0 == inferiors\[0\]" " = True" "test equality comparison (true)"
-gdb_test "python print 'result =', i0.num" " = \[0-9\]+" "test Inferior.num"
-gdb_test "python print 'result =', i0.pid" " = \[0-9\]+" "test Inferior.pid"
-gdb_test "python print 'result =', i0.was_attached" " = False" "test Inferior.was_attached"
-gdb_test "python print i0.threads ()" "\\(<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads"
+gdb_test "python print ('result = %s' % (i0 == inferiors\[0\]))" " = True" "test equality comparison (true)"
+gdb_test "python print ('result = %s' % i0.num)" " = \[0-9\]+" "test Inferior.num"
+gdb_test "python print ('result = %s' % i0.pid)" " = \[0-9\]+" "test Inferior.pid"
+gdb_test "python print ('result = %s' % i0.was_attached)" " = False" "test Inferior.was_attached"
+gdb_test "python print (i0.threads ())" "\\(<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads"
# Test the number of inferior threads.
gdb_breakpoint check_threads
gdb_continue_to_breakpoint "cont to check_threads" ".*pthread_barrier_wait.*"
-gdb_test "python print len (i0.threads ())" "\r\n9" "test Inferior.threads 2"
+gdb_test "python print (len (i0.threads ()))" "\r\n9" "test Inferior.threads 2"
# Proceed to the next test.
gdb_py_test_silent_cmd "python addr = gdb.selected_frame ().read_var ('str')" \
"read str address" 0
-gdb_py_test_silent_cmd "python str = gdb.inferiors()\[0\].read_memory (addr, 5)" \
+gdb_py_test_silent_cmd "python str = gdb.inferiors()\[0\].read_memory (addr, 5); print(str)" \
"read str contents" 1
-gdb_py_test_silent_cmd "python str\[1\] = 'a'" "change str" 0
+if { $gdb_py_is_py3k == 0 } {
+ gdb_py_test_silent_cmd "python a = 'a'" "" 0
+} else {
+ gdb_py_test_silent_cmd "python a = bytes('a', 'ascii')" "" 0
+}
+gdb_py_test_silent_cmd "python str\[1\] = a" "change str" 0
gdb_py_test_silent_cmd "python gdb.inferiors()\[0\].write_memory (addr, str)" \
"write str" 1
-gdb_test "print str" " = \"hallo, testsuite\"" \
+gdb_test "print (str)" " = \"hallo, testsuite\"" \
"ensure str was changed in the inferior"
# Test memory search.
gdb_test_no_output "py start_addr = search_buf.address"
gdb_test_no_output "py length = search_buf.type.sizeof"
-gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, length, 'aaa')" \
+gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, length, 'aaa'))" \
"${one_pattern_found}" "find string pattern"
# Test not finding pattern because search range too small, with
# potential find at the edge of the range.
-gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 10+3, 'aaaa')" \
+gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, 10+3, 'aaaa'))" \
"${pattern_not_found}" "pattern not found at end of range"
# Increase the search range by 1 and we should find the pattern.
-gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 10+3+1, 'aaa')" \
+gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, 10+3+1, 'aaa'))" \
"${one_pattern_found}" "pattern found at end of range"
# Import struct to pack the following patterns.
gdb_test_no_output "py length = search_buf.type.sizeof"
gdb_test_no_output "py pattern = pack('${python_pack_char}H',0x1234)"
-gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, length, pattern)" \
+gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, length, pattern))" \
"${one_pattern_found}" "find 16-bit pattern, with value pattern"
# Test 32-bit pattern.
gdb_test_no_output "py length = search_buf.type.sizeof"
gdb_test_no_output "py pattern = pack('${python_pack_char}I',0x12345678)"
-gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, length, pattern)" \
+gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, length, pattern))" \
"${one_pattern_found}" "find 32-bit pattern, with python pattern"
# Test 64-bit pattern.
gdb_test_no_output "py length = search_buf.type.sizeof"
gdb_test_no_output "py pattern = pack('${python_pack_char}Q', 0xfedcba9876543210)"
-gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, length, pattern)" \
+gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, length, pattern))" \
"${one_pattern_found}" "find 64-bit pattern, with value pattern"
# Test mixed-sized patterns.
gdb_test_no_output "py pattern2 = pack('${python_pack_char}H', 0x6363)"
gdb_test_no_output "py pattern3 = pack('${python_pack_char}I', 0x64646464)"
-gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 100, pattern1)" \
+gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, 100, pattern1))" \
"${one_pattern_found}" "find mixed-sized pattern"
-gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 100, pattern2)" \
+gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, 100, pattern2))" \
"${one_pattern_found}" "find mixed-sized pattern"
-gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 100, pattern3)" \
+gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, 100, pattern3))" \
"${one_pattern_found}" "find mixed-sized pattern"
# Test search spanning a large range, in the particular case of native
gdb_test_no_output "py end_addr = start_addr + gdb.selected_frame ().read_var ('search_buf_size')"
gdb_test_no_output "py pattern = pack('${python_pack_char}I', 0x12345678)"
gdb_test_no_output "py first = gdb.inferiors()\[0\].search_memory (start_addr,end_addr - start_addr, pattern)"
-gdb_test "py print first" "${one_pattern_found}" "search spanning large range 1st result"
+gdb_test "py print (first)" "${one_pattern_found}" "search spanning large range 1st result"
gdb_test_no_output "py start_addr = first + 1"
gdb_test_no_output "py second = gdb.inferiors()\[0\].search_memory (start_addr, end_addr - start_addr, pattern)"
-gdb_test "py print second" "${one_pattern_found}" "search spanning large range 2nd result"
+gdb_test "py print (second)" "${one_pattern_found}" "search spanning large range 2nd result"
gdb_test_no_output "py start_addr = second + 1"
gdb_test_no_output "py third = gdb.inferiors()\[0\].search_memory (start_addr, end_addr - start_addr, pattern)"
-gdb_test "py print third" "${pattern_not_found}" "search spanning large range 3rd result"
+gdb_test "py print (third)" "${pattern_not_found}" "search spanning large range 3rd result"
# For native targets, test a pattern straddling a chunk boundary.
gdb_test_no_output "set *(int32_t*) &search_buf\[${CHUNK_SIZE}-1\] = 0xfdb97531"
gdb_test_no_output "py pattern = pack('${python_pack_char}I', 0xfdb97531)"
gdb_test_no_output "py start_addr = gdb.selected_frame ().read_var ('search_buf')"
- gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, end_addr - start_addr, pattern)" \
+ gdb_test "py print (gdb.inferiors()\[0\].search_memory (start_addr, end_addr - start_addr, pattern))" \
"${one_pattern_found}" "find pattern straddling chunk boundary"
}
# this testcase as it kills the inferior.
gdb_py_test_silent_cmd "python inf_list = gdb.inferiors()" "get initial list" 1
-gdb_test "python print len(inf_list)" "1" "Get inferior list length"
-gdb_test "python print inf_list\[0\].is_valid()" "True" \
+gdb_test "python print (len(inf_list))" "1" "Get inferior list length"
+gdb_test "python print (inf_list\[0\].is_valid())" "True" \
"Check inferior validity"
gdb_test "add-inferior" "Added inferior 2.*" "add empty inferior 2"
gdb_py_test_silent_cmd "python inf_list = gdb.inferiors()" "get new list" 1
-gdb_test "python print len(inf_list)" "2" "Get inferior list length"
-gdb_test "python print inf_list\[0\].is_valid()" "True" \
+gdb_test "python print (len(inf_list))" "2" "Get inferior list length"
+gdb_test "python print (inf_list\[0\].is_valid())" "True" \
"Check inferior validity"
-gdb_test "python print inf_list\[1\].is_valid()" "True" \
+gdb_test "python print (inf_list\[1\].is_valid())" "True" \
"Check inferior validity"
gdb_test_no_output "remove-inferiors 2" "remove-inferiors 3"
-gdb_test "python print inf_list\[0\].is_valid()" "False" \
+gdb_test "python print (inf_list\[0\].is_valid())" "False" \
"Check inferior validity"
-gdb_test "python print inf_list\[1\].is_valid()" "True" \
+gdb_test "python print (inf_list\[1\].is_valid())" "True" \
"Check inferior validity"
# Test gdb.selected_inferior()
gdb_test "inferior 1" ".*" "Switch to first inferior"
-gdb_test "py print gdb.selected_inferior().num" "1" "First inferior selected"
+gdb_test "py print (gdb.selected_inferior().num)" "1" "First inferior selected"
gdb_test "add-inferior" "Added inferior 3" "Create new inferior"
gdb_test "inferior 3" ".*" "Switch to third inferior"
-gdb_test "py print gdb.selected_inferior().num" "3" "Third inferior selected"
+gdb_test "py print (gdb.selected_inferior().num)" "3" "Third inferior selected"
gdb_test "inferior 1" ".*" "Switch to first inferior"
gdb_test_no_output "remove-inferiors 3" "Remove second inferior"
# Test basic gdb.Inferior attributes and methods.
gdb_py_test_silent_cmd "python t0 = gdb.selected_thread ()" "test gdb.selected_thread" 1
-gdb_test "python print t0" "\\<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>" "verify InferiorThread object"
-gdb_test "python print 'result =', t0.num" " = \[0-9\]+" "test Inferior.num"
-gdb_test "python print 'result =', t0.ptid" " = \\(\[0-9\]+, \[0-9\]+, \[0-9\]+\\)" "test InferiorThread.ptid"
+gdb_test "python print (t0)" "\\<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>" "verify InferiorThread object"
+gdb_test "python print ('result = %s' % t0.num)" " = \[0-9\]+" "test Inferior.num"
+gdb_test "python print ('result = %s' % str (t0.ptid))" " = \\(\[0-9\]+, \[0-9\]+, \[0-9\]+\\)" "test InferiorThread.ptid"
gdb_py_test_silent_cmd "python name = gdb.selected_thread().name" \
"get supplied name of current thread" 1
gdb_py_test_silent_cmd "python gdb.selected_thread().name = 'hibob'" \
"set name of current thread" 1
-gdb_test "python print gdb.selected_thread().name" "hibob" \
+gdb_test "python print (gdb.selected_thread().name)" "hibob" \
"check name of current thread"
gdb_py_test_silent_cmd "python gdb.selected_thread().name = None" \
"reset name of current thread" 1
-gdb_test "python print gdb.selected_thread().name == name" "True" \
+gdb_test "python print (gdb.selected_thread().name == name)" "True" \
"check name of current thread again"
-gdb_test "python print 'result =', t0.is_stopped ()" " = True" "test InferiorThread.is_stopped"
-gdb_test "python print 'result =', t0.is_running ()" " = False" "test InferiorThread.is_running"
-gdb_test "python print 'result =', t0.is_exited ()" " = False" "test InferiorThread.is_exited"
+gdb_test "python print ('result = %s' % t0.is_stopped ())" " = True" "test InferiorThread.is_stopped"
+gdb_test "python print ('result = %s' % t0.is_running ())" " = False" "test InferiorThread.is_running"
+gdb_test "python print ('result = %s' % t0.is_exited ())" " = False" "test InferiorThread.is_exited"
# Test InferiorThread is_valid. This must always be the last test in
# this testcase as it kills the inferior.
-gdb_test "python print 'result =', t0.is_valid ()" " = True" "test InferiorThread.is_valid"
+gdb_test "python print ('result = %s' % t0.is_valid ())" " = True" "test InferiorThread.is_valid"
gdb_test_no_output "kill inferior 1" "kill inferior 1"
-gdb_test "python print 'result =', t0.is_valid ()" " = False" "test InferiorThread.is_valid"
+gdb_test "python print ('result = %s' % t0.is_valid ())" " = False" "test InferiorThread.is_valid"
set remote_python_file [remote_download host ${srcdir}/${subdir}/${pyfile}]
-mi_gdb_test "python execfile ('${remote_python_file}')" ""
+mi_gdb_test "python exec (open ('${remote_python_file}').read ())" ""
mi_continue_to_line [gdb_get_line_number {MI breakpoint here} ${srcfile}] \
"step to breakpoint"
gdb_py_test_silent_cmd "python objfile = sym\[0\].symtab.objfile" \
"Get backing object file" 1
-gdb_test "python print objfile.filename" ".*py-objfile.*" \
+gdb_test "python print (objfile.filename)" ".*py-objfile.*" \
"Get objfile validity"
-gdb_test "python print objfile.is_valid()" "True" \
+gdb_test "python print (objfile.is_valid())" "True" \
"Get objfile validity"
gdb_unload
-gdb_test "python print objfile.is_valid()" "False" \
+gdb_test "python print (objfile.is_valid())" "False" \
"Get objfile validity after unload"
if { [skip_python_tests] } { continue }
# We use "." here instead of ":" so that this works on win32 too.
-gdb_test "python print gdb.parameter ('directories')" "$srcdir/$subdir.\\\$cdir.\\\$cwd"
+gdb_test "python print (gdb.parameter ('directories'))" "$srcdir/$subdir.\\\$cdir.\\\$cwd"
# Test a simple boolean parameter.
gdb_py_test_multiple "Simple gdb booleanparameter" \
"test_param = TestParam ('print test-param')" ""\
"end"
-gdb_test "python print test_param.value" "True" "Test parameter value"
+gdb_test "python print (test_param.value)" "True" "Test parameter value"
gdb_test "show print test-param" "The state of the Test Parameter is on.*" "Show parameter on"
gdb_test "set print test-param off" "Test Parameter has been set to off" "Turn off parameter"
gdb_test "show print test-param" "The state of the Test Parameter is off.*" "Show parameter off"
-gdb_test "python print test_param.value" "False" "Test parameter value"
+gdb_test "python print (test_param.value)" "False" "Test parameter value"
gdb_test "help show print test-param" "Show the state of the boolean test-param.*" "Test show help"
gdb_test "help set print test-param" "Set the state of the boolean test-param.*" "Test set help"
gdb_test "help set print" "set print test-param -- Set the state of the boolean test-param.*" "Test general help"
"test_enum_param = TestEnumParam ('print test-enum-param')" ""\
"end"
-gdb_test "python print test_enum_param.value" "one" "Test enum parameter value"
+gdb_test "python print (test_enum_param.value)" "one" "Test enum parameter value"
gdb_test "show print test-enum-param" "The state of the enum is one.*" "Show parameter is initial value"
gdb_test "set print test-enum-param two" "The state of the enum has been set to two" "Set enum to two"
gdb_test "show print test-enum-param" "The state of the enum is two.*" "Show parameter is new value"
-gdb_test "python print test_enum_param.value" "two" "Test enum parameter value"
+gdb_test "python print (test_enum_param.value)" "two" "Test enum parameter value"
gdb_test "set print test-enum-param three" "Undefined item: \"three\".*" "Set invalid enum parameter"
# Test a file parameter.
"test_file_param = TestFileParam ('test-file-param')" ""\
"end"
-gdb_test "python print test_file_param.value" "foo.txt" "Test file parameter value"
+gdb_test "python print (test_file_param.value)" "foo.txt" "Test file parameter value"
gdb_test "show test-file-param" "The name of the file is foo.txt.*" "Show initial file value"
gdb_test "set test-file-param bar.txt" "The name of the file has been changed to bar.txt" "Set new file parameter" 1
gdb_test "show test-file-param" "The name of the file is bar.txt.*" "Show new file value"
-gdb_test "python print test_file_param.value" "bar.txt" "Test new file parameter value"
+gdb_test "python print (test_file_param.value)" "bar.txt" "Test new file parameter value"
gdb_test "set test-file-param" "Argument required.*"
# Test a parameter that is not documented.
gdb_test "show print test-undoc-param" "The state of the Test Parameter is on.*" "Show parameter on"
gdb_test "set print test-undoc-param off" "Test Parameter has been set to off" "Turn off parameter"
gdb_test "show print test-undoc-param" "The state of the Test Parameter is off.*" "Show parameter off"
-gdb_test "python print test_undoc_param.value" "False" "Test parameter value"
+gdb_test "python print (test_undoc_param.value)" "False" "Test parameter value"
gdb_test "help show print test-undoc-param" "This command is not documented.*" "Test show help"
gdb_test "help set print test-undoc-param" "This command is not documented.*" "Test set help"
gdb_test "help set print" "set print test-undoc-param -- This command is not documented.*" "Test general help"
gdb_test "show print test-nodoc-param" "This command is not documented.*" "Show parameter on"
gdb_test "set print test-nodoc-param off" "This command is not documented.*" "Turn off parameter"
gdb_test "show print test-nodoc-param" "This command is not documented.*.*" "Show parameter off"
-gdb_test "python print test_nodoc_param.value" "False" "Test parameter value"
+gdb_test "python print (test_nodoc_param.value)" "False" "Test parameter value"
gdb_test "help show print test-nodoc-param" "This command is not documented.*" "Test show help"
gdb_test "help set print test-nodoc-param" "This command is not documented.*" "Test set help"
gdb_test "help set print" "set print test-nodoc-param -- This command is not documented.*" "Test general help"
"test_param = TestParam ('print test-param')" ""\
"end"
-gdb_test "python print test_param.value" "True" "Test parameter value"
+gdb_test "python print (test_param.value)" "True" "Test parameter value"
gdb_test "show print test-param" "State of the Test Parameter on.*" "Show parameter on"
gdb_test "set print test-param off" "Set the state of the Test Parameter.*" "Turn off parameter"
gdb_test "show print test-param" "State of the Test Parameter off.*" "Show parameter off"
-gdb_test "python print test_param.value" "False" "Test parameter value"
+gdb_test "python print (test_param.value)" "False" "Test parameter value"
gdb_test "help show print test-param" "State of the Test Parameter.*" "Test show help"
gdb_test "help set print test-param" "Set the state of the Test Parameter.*" "Test set help"
gdb_test "help set print" "set print test-param -- Set the state of the Test Parameter.*" "Test general help"
set python_file ${srcdir}/${subdir}/${testfile}.py
-gdb_test_no_output "python execfile ('${python_file}')" ""
+gdb_test_no_output "python exec (open ('${python_file}').read ())" ""
gdb_test "info pretty-printer" \
{.*function_lookup_test.*pp-test.*struct ss.*}
return None
-class pp_s:
+class pp_s (object):
def __init__(self, val):
self.val = val
return "a=<" + str(self.val["a"]) + "> b=<" + str(self.val["b"]) + ">"
-class pp_ss:
+class pp_ss (object):
def __init__(self, val):
self.val = val
set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}.py]
- gdb_test_no_output "python execfile ('${remote_python_file}')"
+ gdb_test_no_output "python exec (open ('${remote_python_file}').read ())"
gdb_test "print ss" " = a=< a=<1> b=<$hex>> b=< a=<2> b=<$hex>>"
gdb_test "print ssa\[1\]" " = a=< a=<5> b=<$hex>> b=< a=<6> b=<$hex>>"
set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}.py]
-gdb_test_no_output "python execfile ('${remote_python_file}')"
+gdb_test_no_output "python exec (open ('${remote_python_file}').read ())"
gdb_breakpoint [gdb_get_line_number "eval-break"]
gdb_continue_to_breakpoint "eval-break" ".* eval-break .*"
import re
import gdb
+def _iterator (pointer, len):
+ start = pointer
+ end = pointer + len
+ while pointer != end:
+ if exception_flag:
+ raise gdb.MemoryError ('hi bob')
+ yield ('[%d]' % int (pointer - start), pointer.dereference())
+ pointer += 1
+
# Test returning a Value from a printer.
-class string_print:
+class string_print (object):
def __init__(self, val):
self.val = val
return self.val['whybother']['contents']
# Test a class-based printer.
-class ContainerPrinter:
- class _iterator:
- def __init__ (self, pointer, len):
- self.start = pointer
- self.pointer = pointer
- self.end = pointer + len
-
- def __iter__(self):
- return self
-
- def next(self):
- if self.pointer == self.end:
- raise StopIteration
- result = self.pointer
- self.pointer = self.pointer + 1
- return ('[%d]' % int (result - self.start), result.dereference())
+class ContainerPrinter (object):
def __init__(self, val):
self.val = val
return 'container %s with %d elements' % (self.val['name'], self.val['len'])
def children(self):
- return self._iterator(self.val['elements'], self.val['len'])
+ return _iterator(self.val['elements'], self.val['len'])
# Treats a container as array.
class ArrayPrinter:
exception_flag = False
# Test a printer where to_string is None
-class NoStringContainerPrinter:
- class _iterator:
- def __init__ (self, pointer, len):
- self.start = pointer
- self.pointer = pointer
- self.end = pointer + len
-
- def __iter__(self):
- return self
-
- def next(self):
- if self.pointer == self.end:
- raise StopIteration
- if exception_flag:
- raise gdb.MemoryError, 'hi bob'
- result = self.pointer
- self.pointer = self.pointer + 1
- return ('[%d]' % int (result - self.start), result.dereference())
-
+class NoStringContainerPrinter (object):
def __init__(self, val):
self.val = val
return None
def children(self):
- return self._iterator(self.val['elements'], self.val['len'])
+ return _iterator(self.val['elements'], self.val['len'])
-class pp_s:
+class pp_s (object):
def __init__(self, val):
self.val = val
raise Exception("&a(%s) != b(%s)" % (str(a.address), str(b)))
return " a=<" + str(self.val["a"]) + "> b=<" + str(self.val["b"]) + ">"
-class pp_ss:
+class pp_ss (object):
def __init__(self, val):
self.val = val
def to_string(self):
return "a=<" + str(self.val["a"]) + "> b=<" + str(self.val["b"]) + ">"
-class pp_sss:
+class pp_sss (object):
def __init__(self, val):
self.val = val
def to_string(self):
return "a=<" + str(self.val['a']) + "> b=<" + str(self.val["b"]) + ">"
-class pp_multiple_virtual:
+class pp_multiple_virtual (object):
def __init__ (self, val):
self.val = val
def to_string (self):
return "pp value variable is: " + str (self.val['value'])
-class pp_vbase1:
+class pp_vbase1 (object):
def __init__ (self, val):
self.val = val
def to_string (self):
return "pp class name: " + self.val.type.tag
-class pp_nullstr:
+class pp_nullstr (object):
def __init__(self, val):
self.val = val
def to_string(self):
return self.val['s'].string(gdb.target_charset())
-class pp_ns:
+class pp_ns (object):
"Print a std::basic_string of some kind"
def __init__(self, val):
pp_ls_encoding = None
-class pp_ls:
+class pp_ls (object):
"Print a std::basic_string of some kind"
def __init__(self, val):
def display_hint (self):
return 'string'
-class pp_hint_error:
+class pp_hint_error (object):
"Throw error from display_hint"
def __init__(self, val):
def display_hint (self):
raise Exception("hint failed")
-class pp_children_as_list:
+class pp_children_as_list (object):
"Throw error from display_hint"
def __init__(self, val):
def children (self):
return [('one', 1)]
-class pp_outer:
+class pp_outer (object):
"Print struct outer"
def __init__ (self, val):
yield 's', self.val['s']
yield 'x', self.val['x']
-class MemoryErrorString:
+class MemoryErrorString (object):
"Raise an error"
def __init__(self, val):
self.val = val
def to_string(self):
- raise gdb.MemoryError ("Cannot access memory.");
+ raise gdb.MemoryError ("Cannot access memory.")
def display_hint (self):
return 'string'
-class pp_eval_type:
+class pp_eval_type (object):
def __init__(self, val):
self.val = val
def to_string(self):
- gdb.execute("bt", to_string=True)
+ gdb.execute("bt", to_string=True)
return "eval=<" + str(gdb.parse_and_eval("eval_func (123456789, 2, 3, 4, 5, 6, 7, 8)")) + ">"
def lookup_function (val):
# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }
-gdb_test "python print gdb.current_progspace().filename" "None" \
+gdb_test "python print (gdb.current_progspace().filename)" "None" \
"current progspace filename (None)"
-gdb_test "python print gdb.progspaces()" "\\\[<gdb.Progspace object at $hex>\\\]"
+gdb_test "python print (gdb.progspaces())" "\\\[<gdb.Progspace object at $hex>\\\]"
gdb_load ${binfile}
-gdb_test "python print gdb.current_progspace().filename" "py-progspace" \
+gdb_test "python print (gdb.current_progspace().filename)" "py-progspace" \
"current progspace filename (py-progspace)"
set GDBFLAGS [concat $tmp_gdbflags " -ex \"set editing on\""]
prompt_gdb_start
-gdb_test "python x = len(p); print gdb.execute(\"show prompt\", to_string = True)" \
+gdb_test "python x = len(p); print (gdb.execute(\"show prompt\", to_string = True))" \
".*prompt is \"$gdb_prompt \".*" \
"show prompt gets the correct result"
-gdb_test "python print x, len(p)" "1 2" \
+gdb_test "python print ('%d %d' % (x, len(p)))" "1 2" \
"retrieving the prompt causes no extra prompt_hook calls"
-gdb_test "python print \"'\" + str(p\[0\]) + \"'\"" "'$gdb_prompt_fail '" \
+gdb_test "python print (\"'\" + str(p\[0\]) + \"'\")" "'$gdb_prompt_fail '" \
"prompt_hook argument is default prompt."
gdb_exit
set GDBFLAGS [concat $tmp_gdbflags " -ex \"set editing off\""]
prompt_gdb_start
-gdb_test "python x = len(p); print gdb.execute(\"show prompt\", to_string = True)" \
+gdb_test "python x = len(p); print (gdb.execute(\"show prompt\", to_string = True))" \
".*prompt is \"$gdb_prompt \".*" \
"show prompt gets the correct result 2"
-gdb_test "python print x, len(p)" "1 2" \
+gdb_test "python print ('%d %d' % (x, len(p)))" "1 2" \
"retrieving the prompt causes no extra prompt_hook calls 2"
-gdb_test "python print \"'\" + str(p\[0\]) + \"'\"" "'$gdb_prompt_fail '" \
+gdb_test "python print (\"'\" + str(p\[0\]) + \"'\")" "'$gdb_prompt_fail '" \
"prompt_hook argument is default prompt. 2"
gdb_exit
# sync_execution = 1 is_running = 1
prompt_gdb_start
-gdb_test "python x = len(p); print gdb.execute(\"show prompt\", to_string = True)" \
+gdb_test "python x = len(p); print (gdb.execute(\"show prompt\", to_string = True))" \
".*prompt is \"$gdb_prompt \".*" \
"show prompt gets the correct result 3"
-gdb_test "python print x, len(p)" "1 2" \
+gdb_test "python print ('%d %d' % (x, len(p)))" "1 2" \
"retrieving the prompt causes no extra prompt_hook calls 3"
-gdb_test "python print \"'\" + str(p\[0\]) + \"'\"" "'$gdb_prompt_fail '" \
+gdb_test "python print (\"'\" + str(p\[0\]) + \"'\")" "'$gdb_prompt_fail '" \
"prompt_hook argument is default prompt. 3"
gdb_exit
# sync_execution = 1 is_running = 0
prompt_gdb_start
-gdb_test "python x = len(p); print gdb.execute(\"show prompt\", to_string = True)" \
+gdb_test "python x = len(p); print (gdb.execute(\"show prompt\", to_string = True))" \
".*prompt is \"$gdb_prompt \".*" \
"show prompt gets the correct result 4"
-gdb_test "python print x, len(p)" "1 2" \
+gdb_test "python print ('%d %d' % (x, len(p)))" "1 2" \
"retrieving the prompt causes no extra prompt_hook calls 4"
-gdb_test "python print \"'\" + str(p\[0\]) + \"'\"" "'$gdb_prompt_fail '" \
+gdb_test "python print (\"'\" + str(p\[0\]) + \"'\")" "'$gdb_prompt_fail '" \
"prompt_hook argument is default prompt. 4"
gdb_exit
# Test gdb.solib_name
gdb_test "p &func1" "" "func1 address"
gdb_py_test_silent_cmd "python func1 = gdb.history(0)" "Aquire func1 address" 1
-gdb_test "python print gdb.solib_name(long(func1))" "py-shared-sl.sl" "test func1 solib location"
+if { $gdb_py_is_py3k == 1 } {
+ gdb_py_test_silent_cmd "python long = int" "" 0
+}
+gdb_test "python print (gdb.solib_name(long(func1)))" "py-shared-sl.sl" "test func1 solib location"
gdb_test "p &main" "" "main address"
gdb_py_test_silent_cmd "python main = gdb.history(0)" "Aquire main address" 1
-gdb_test "python print gdb.solib_name(long(main))" "None" "test main solib location"
+gdb_test "python print (gdb.solib_name(long(main)))" "None" "test main solib location"
# point where we don't have a current frame, and we don't want to
# require one.
gdb_py_test_silent_cmd "python main_func = gdb.lookup_global_symbol(\"main\")" "Lookup main" 1
-gdb_test "python print main_func.is_function" "True" "Test main_func.is_function"
-gdb_test "python print gdb.lookup_global_symbol(\"junk\")" "None" "Test lookup_global_symbol(\"junk\")"
+gdb_test "python print (main_func.is_function)" "True" "Test main_func.is_function"
+gdb_test "python print (gdb.lookup_global_symbol(\"junk\"))" "None" "Test lookup_global_symbol(\"junk\")"
-gdb_test "python print gdb.lookup_global_symbol('main').value()" "$hex .main." \
+gdb_test "python print (gdb.lookup_global_symbol('main').value())" "$hex .main." \
"print value of main"
set qq_line [gdb_get_line_number "line of qq"]
-gdb_test "python print gdb.lookup_global_symbol('qq').line" "$qq_line" \
+gdb_test "python print (gdb.lookup_global_symbol('qq').line)" "$qq_line" \
"print line number of qq"
-gdb_test "python print gdb.lookup_global_symbol('qq').value()" "72" \
+gdb_test "python print (gdb.lookup_global_symbol('qq').value())" "72" \
"print value of qq"
-gdb_test "python print gdb.lookup_global_symbol('qq').needs_frame" \
+gdb_test "python print (gdb.lookup_global_symbol('qq').needs_frame)" \
"False" \
"print whether qq needs a frame"
# Test is_argument attribute.
gdb_py_test_silent_cmd "python arg = gdb.lookup_symbol(\"arg\")" "Get variable a" 0
-gdb_test "python print arg\[0\].is_variable" "False" "Test arg.is_variable"
-gdb_test "python print arg\[0\].is_constant" "False" "Test arg.is_constant"
-gdb_test "python print arg\[0\].is_argument" "True" "Test arg.is_argument"
-gdb_test "python print arg\[0\].is_function" "False" "Test arg.is_function"
+gdb_test "python print (arg\[0\].is_variable)" "False" "Test arg.is_variable"
+gdb_test "python print (arg\[0\].is_constant)" "False" "Test arg.is_constant"
+gdb_test "python print (arg\[0\].is_argument)" "True" "Test arg.is_argument"
+gdb_test "python print (arg\[0\].is_function)" "False" "Test arg.is_function"
# Test is_function attribute.
gdb_py_test_silent_cmd "python func = frame.block().function" "Get block" 0
-gdb_test "python print func.is_variable" "False" "Test func.is_variable"
-gdb_test "python print func.is_constant" "False" "Test func.is_constant"
-gdb_test "python print func.is_argument" "False" "Test func.is_argument"
-gdb_test "python print func.is_function" "True" "Test func.is_function"
-gdb_test "python print func.name" "func" "Test func.name"
-gdb_test "python print func.print_name" "func" "Test func.print_name"
-gdb_test "python print func.linkage_name" "func" "Test func.linkage_name"
-gdb_test "python print func.addr_class == gdb.SYMBOL_LOC_BLOCK" "True" "Test func.addr_class"
+gdb_test "python print (func.is_variable)" "False" "Test func.is_variable"
+gdb_test "python print (func.is_constant)" "False" "Test func.is_constant"
+gdb_test "python print (func.is_argument)" "False" "Test func.is_argument"
+gdb_test "python print (func.is_function)" "True" "Test func.is_function"
+gdb_test "python print (func.name)" "func" "Test func.name"
+gdb_test "python print (func.print_name)" "func" "Test func.print_name"
+gdb_test "python print (func.linkage_name)" "func" "Test func.linkage_name"
+gdb_test "python print (func.addr_class == gdb.SYMBOL_LOC_BLOCK)" "True" "Test func.addr_class"
gdb_breakpoint [gdb_get_line_number "Break at end."]
gdb_continue_to_breakpoint "Break at end."
# Test is_variable attribute.
gdb_py_test_silent_cmd "python a = gdb.lookup_symbol(\'a\')" "Get variable a" 0
-gdb_test "python print a\[0\].is_variable" "True" "Test a.is_variable"
-gdb_test "python print a\[0\].is_constant" "False" "Test a.is_constant"
-gdb_test "python print a\[0\].is_argument" "False" "Test a.is_argument"
-gdb_test "python print a\[0\].is_function" "False" "Test a.is_function"
-gdb_test "python print a\[0\].addr_class == gdb.SYMBOL_LOC_COMPUTED" "True" "Test a.addr_class"
+gdb_test "python print (a\[0\].is_variable)" "True" "Test a.is_variable"
+gdb_test "python print (a\[0\].is_constant)" "False" "Test a.is_constant"
+gdb_test "python print (a\[0\].is_argument)" "False" "Test a.is_argument"
+gdb_test "python print (a\[0\].is_function)" "False" "Test a.is_function"
+gdb_test "python print (a\[0\].addr_class == gdb.SYMBOL_LOC_COMPUTED)" "True" "Test a.addr_class"
-gdb_test "python print a\[0\].value()" \
+gdb_test "python print (a\[0\].value())" \
"symbol requires a frame to compute its value.*"\
"try to print value of a without a frame"
-gdb_test "python print a\[0\].value(frame)" "0" \
+gdb_test "python print (a\[0\].value(frame))" "0" \
"print value of a"
-gdb_test "python print a\[0\].needs_frame" "True" \
+gdb_test "python print (a\[0\].needs_frame)" "True" \
"print whether a needs a frame"
# Test is_constant attribute
gdb_py_test_silent_cmd "python t = gdb.lookup_symbol(\"one\")" "Get variable a" 0
-gdb_test "python print t\[0\].is_variable" "False" "Test t.is_variable"
-gdb_test "python print t\[0\].is_constant" "True" "Test t.is_constant"
-gdb_test "python print t\[0\].is_argument" "False" "Test t.is_argument"
-gdb_test "python print t\[0\].is_function" "False" "Test t.is_function"
-gdb_test "python print t\[0\].addr_class == gdb.SYMBOL_LOC_CONST" "True" "Test t.addr_class"
+gdb_test "python print (t\[0\].is_variable)" "False" "Test t.is_variable"
+gdb_test "python print (t\[0\].is_constant)" "True" "Test t.is_constant"
+gdb_test "python print (t\[0\].is_argument)" "False" "Test t.is_argument"
+gdb_test "python print (t\[0\].is_function)" "False" "Test t.is_function"
+gdb_test "python print (t\[0\].addr_class == gdb.SYMBOL_LOC_CONST)" "True" "Test t.addr_class"
# Test type attribute.
-gdb_test "python print t\[0\].type" "enum tag" "Get type"
+gdb_test "python print (t\[0\].type)" "enum tag" "Get type"
# Test symtab attribute.
-gdb_test "python print t\[0\].symtab" "gdb.python/py-symbol.c.*" "Get symtab"
+gdb_test "python print (t\[0\].symtab)" "gdb.python/py-symbol.c.*" "Get symtab"
# C++ tests
# Recompile binary.
gdb_py_test_silent_cmd "python cplusframe = gdb.selected_frame()" "Get Frame" 0
gdb_py_test_silent_cmd "python cplusfunc = cplusframe.block().function" "Get block" 0
-gdb_test "python print cplusfunc.is_variable" "False" "Test func.is_variable"
-gdb_test "python print cplusfunc.is_constant" "False" "Test func.is_constant"
-gdb_test "python print cplusfunc.is_argument" "False" "Test func.is_argument"
-gdb_test "python print cplusfunc.is_function" "True" "Test func.is_function"
-gdb_test "python print cplusfunc.name" "SimpleClass::valueofi().*" "Test func.name"
-gdb_test "python print cplusfunc.print_name" "SimpleClass::valueofi().*" "Test func.print_name"
-gdb_test "python print cplusfunc.linkage_name" "SimpleClass::valueofi().*" "Test func.linkage_name"
-gdb_test "python print cplusfunc.addr_class == gdb.SYMBOL_LOC_BLOCK" "True" "Test func.addr_class"
+gdb_test "python print (cplusfunc.is_variable)" "False" "Test func.is_variable"
+gdb_test "python print (cplusfunc.is_constant)" "False" "Test func.is_constant"
+gdb_test "python print (cplusfunc.is_argument)" "False" "Test func.is_argument"
+gdb_test "python print (cplusfunc.is_function)" "True" "Test func.is_function"
+gdb_test "python print (cplusfunc.name)" "SimpleClass::valueofi().*" "Test func.name"
+gdb_test "python print (cplusfunc.print_name)" "SimpleClass::valueofi().*" "Test func.print_name"
+gdb_test "python print (cplusfunc.linkage_name)" "SimpleClass::valueofi().*" "Test func.linkage_name"
+gdb_test "python print (cplusfunc.addr_class == gdb.SYMBOL_LOC_BLOCK)" "True" "Test func.addr_class"
# Test is_valid when the objfile is unloaded. This must be the last
# test as it unloads the object file in GDB.
gdb_breakpoint [gdb_get_line_number "Break at end."]
gdb_continue_to_breakpoint "Break at end."
gdb_py_test_silent_cmd "python a = gdb.lookup_symbol(\'a\')" "Get variable a" 0
-gdb_test "python print a\[0\].is_valid()" "True" "Test symbol validity"
+gdb_test "python print (a\[0\].is_valid())" "True" "Test symbol validity"
delete_breakpoints
gdb_unload
-gdb_test "python print a\[0\].is_valid()" "False" "Test symbol validity"
+gdb_test "python print (a\[0\].is_valid())" "False" "Test symbol validity"
gdb_test_no_output "python a = None" "Test symbol destructor"
gdb_py_test_silent_cmd "python new_pc = gdb.selected_frame().find_sal().pc" "Get new PC" 0
# Test sal.
-gdb_test "python print sal.symtab" ".*gdb.python/py-symbol.c.*" "Test symtab"
-gdb_test "python print sal.pc" "${decimal}" "Test sal.pc"
-gdb_test "python print sal.last == (new_pc - 1)" "True" "Test sal.last"
-gdb_test "python print sal.line" "$line_no" "Test sal.line"
-gdb_test "python print sal.is_valid()" "True" "Test sal.is_valid"
+gdb_test "python print (sal.symtab)" ".*gdb.python/py-symbol.c.*" "Test symtab"
+gdb_test "python print (sal.pc)" "${decimal}" "Test sal.pc"
+gdb_test "python print (sal.last == (new_pc - 1))" "True" "Test sal.last"
+gdb_test "python print (sal.line)" "$line_no" "Test sal.line"
+gdb_test "python print (sal.is_valid())" "True" "Test sal.is_valid"
# Test symbol table.
-gdb_test "python print symtab.filename" ".*gdb.python/py-symbol.c.*" "Test symtab.filename"
-gdb_test "python print symtab.objfile" "<gdb.Objfile object at ${hex}>" "Test symtab.objfile"
-gdb_test "python print symtab.fullname()" "testsuite/gdb.python/py-symbol.c.*" "Test symtab.fullname"
-gdb_test "python print symtab.is_valid()" "True" "Test symtab.is_valid()"
-gdb_test "python print \"qq\" in global_symbols" "True" "Test qq in global symbols"
-gdb_test "python print \"func\" in global_symbols" "True" "Test func in global symbols"
-gdb_test "python print \"main\" in global_symbols" "True" "Test main in global symbols"
-gdb_test "python print \"int\" in static_symbols" "True" "Test int in static symbols"
-gdb_test "python print \"char\" in static_symbols" "True" "Test char in static symbols"
-gdb_test "python print \"simple_struct\" in static_symbols" "True" "Test simple_struct in static symbols"
+gdb_test "python print (symtab.filename)" ".*gdb.python/py-symbol.c.*" "Test symtab.filename"
+gdb_test "python print (symtab.objfile)" "<gdb.Objfile object at ${hex}>" "Test symtab.objfile"
+gdb_test "python print (symtab.fullname())" "testsuite/gdb.python/py-symbol.c.*" "Test symtab.fullname"
+gdb_test "python print (symtab.is_valid())" "True" "Test symtab.is_valid()"
+gdb_test "python print (\"qq\" in global_symbols)" "True" "Test qq in global symbols"
+gdb_test "python print (\"func\" in global_symbols)" "True" "Test func in global symbols"
+gdb_test "python print (\"main\" in global_symbols)" "True" "Test main in global symbols"
+gdb_test "python print (\"int\" in static_symbols)" "True" "Test int in static symbols"
+gdb_test "python print (\"char\" in static_symbols)" "True" "Test char in static symbols"
+gdb_test "python print (\"simple_struct\" in static_symbols)" "True" "Test simple_struct in static symbols"
# Test is_valid when the objfile is unloaded. This must be the last
# test as it unloads the object file in GDB.
gdb_unload
-gdb_test "python print sal.is_valid()" "False" "Test sal.is_valid"
-gdb_test "python print symtab.is_valid()" "False" "Test symtab.is_valid()"
+gdb_test "python print (sal.is_valid())" "False" "Test sal.is_valid"
+gdb_test "python print (symtab.is_valid())" "False" "Test symtab.is_valid()"
gdb_test_no_output "python sal = None" "Test sal destructor"
gdb_test_no_output "python symtab = None" "Test symtab destructor"
return
}
# There is no executable code in main(), so we are where we want to be
- gdb_test "print foo" ".*"
+ gdb_test "print (foo)" ".*"
gdb_test_no_output "python foo = gdb.history(0)"
# Replace '*' with '\*' in regex.
regsub -all {\*} $type {\*} t
- gdb_test "python print foo.type.template_argument(0)" $t $type
+ gdb_test "python print (foo.type.template_argument(0))" $t $type
}
test_template_arg "${binfile}-ci" "const int"
global gdb_prompt
# .fields() of a typedef should still return the underlying field list
- gdb_test "python print len(gdb.parse_and_eval('ts').type.fields())" "2" \
+ gdb_test "python print (len(gdb.parse_and_eval('ts').type.fields()))" "2" \
"$lang typedef field list"
if {$lang == "c++"} {
gdb_py_test_silent_cmd "print c" "print value (c)" 1
gdb_py_test_silent_cmd "python c = gdb.history (0)" "get value (c) from history" 1
gdb_py_test_silent_cmd "python fields = c.type.fields()" "get fields from c.type" 1
- gdb_test "python print len(fields)" "2" "Check number of fields (c)"
- gdb_test "python print fields\[0\].name" "c" "Check class field c name"
- gdb_test "python print fields\[1\].name" "d" "Check class field d name"
+ gdb_test "python print (len(fields))" "2" "Check number of fields (c)"
+ gdb_test "python print (fields\[0\].name)" "c" "Check class field c name"
+ gdb_test "python print (fields\[1\].name)" "d" "Check class field d name"
- gdb_test "python print c.type == gdb.parse_and_eval('d').type" "False"
- gdb_test "python print c.type == gdb.parse_and_eval('d').type.fields()\[0\].type" \
+ gdb_test "python print (c.type == gdb.parse_and_eval('d').type)" "False"
+ gdb_test "python print (c.type == gdb.parse_and_eval('d').type.fields()\[0\].type)" \
"True"
}
gdb_py_test_silent_cmd "print st" "print value (st)" 1
gdb_py_test_silent_cmd "python st = gdb.history (0)" "get value (st) from history" 1
gdb_py_test_silent_cmd "python fields = st.type.fields()" "get fields from st.type" 1
- gdb_test "python print len(fields)" "2" "Check number of fields (st)"
- gdb_test "python print fields\[0\].name" "a" "Check structure field a name"
- gdb_test "python print fields\[1\].name" "b" "Check structure field b name"
+ gdb_test "python print (len(fields))" "2" "Check number of fields (st)"
+ gdb_test "python print (fields\[0\].name)" "a" "Check structure field a name"
+ gdb_test "python print (fields\[1\].name)" "b" "Check structure field b name"
# Regression test for
# http://sourceware.org/bugzilla/show_bug.cgi?id=12070.
- gdb_test "python print 'type' in dir(fields\[0\])" "True" \
+ gdb_test "python print ('type' in dir(fields\[0\]))" "True" \
"Check that dir includes name"
# Test Python mapping behavior of gdb.Type for structs/classes
- gdb_test "python print len(st.type)" "2" "Check number of fields (st.type)"
- gdb_test "python print st.type\['a'\].name" "a" "Check fields lookup by name"
- gdb_test "python print \[v.bitpos for v in st.type.itervalues()\]" {\[0L, 32L\]} "Check fields iteration over values"
- gdb_test "python print \[(n, v.bitpos) for (n, v) in st.type.items()\]" {\[\('a', 0L\), \('b', 32L\)\]} "Check fields items list"
- gdb_test "python print 'a' in st.type" "True" "Check field name exists test"
- gdb_test "python print 'nosuch' in st.type" "False" "Check field name nonexists test"
- gdb_test "python print not not st.type" "True" "Check conversion to bool"
+ gdb_test "python print (len(st.type))" "2" "Check number of fields (st.type)"
+ gdb_test "python print (st.type\['a'\].name)" "a" "Check fields lookup by name"
+ gdb_test "python print (\[v.bitpos for v in st.type.itervalues()\])" {\[0L?, 32L?\]} "Check fields iteration over values"
+ gdb_test "python print (\[(n, v.bitpos) for (n, v) in st.type.items()\])" {\[\('a', 0L?\), \('b', 32L?\)\]} "Check fields items list"
+ gdb_test "python print ('a' in st.type)" "True" "Check field name exists test"
+ gdb_test "python print ('nosuch' in st.type)" "False" "Check field name nonexists test"
+ gdb_test "python print (not not st.type)" "True" "Check conversion to bool"
# Test rejection of mapping operations on scalar types
- gdb_test "python print len (st.type\['a'\].type)" "TypeError: Type is not a structure, union, or enum type.*"
- gdb_test "python print st.type\['a'\].type.has_key ('x')" "TypeError: Type is not a structure, union, or enum type.*"
- gdb_test "python print st.type\['a'\].type.keys ()" "TypeError: Type is not a structure, union, or enum type.*"
- gdb_test "python print st.type\['a'\].type\['x'\]" "TypeError: Type is not a structure, union, or enum type.*"
+ gdb_test "python print (len (st.type\['a'\].type))" "TypeError: Type is not a structure, union, or enum type.*"
+ gdb_test "python print (st.type\['a'\].type.has_key ('x'))" "TypeError: Type is not a structure, union, or enum type.*"
+ gdb_test "python print (st.type\['a'\].type.keys ())" "TypeError: Type is not a structure, union, or enum type.*"
+ gdb_test "python print (st.type\['a'\].type\['x'\])" "TypeError: Type is not a structure, union, or enum type.*"
# Test conversion to bool on scalar types
- gdb_test "python print not not st.type\['a'\].type" "True"
+ gdb_test "python print (not not st.type\['a'\].type)" "True"
# Test regression PR python/10805
gdb_py_test_silent_cmd "print ar" "print value (ar)" 1
gdb_py_test_silent_cmd "python ar = gdb.history (0)" "get value (ar) from history" 1
gdb_test "python fields = ar.type.fields()"
- gdb_test "python print len(fields)" "1" "Check the number of fields"
- gdb_test "python print fields\[0\].type" "<range type>" "Check array field type"
+ gdb_test "python print (len(fields))" "1" "Check the number of fields"
+ gdb_test "python print (fields\[0\].type)" "<range type>" "Check array field type"
# Test gdb.Type.array.
- gdb_test "python print ar\[0\].cast(ar\[0\].type.array(1))" \
+ gdb_test "python print (ar\[0\].cast(ar\[0\].type.array(1)))" \
".1, 2." "cast to array with one argument"
- gdb_test "python print ar\[0\].cast(ar\[0\].type.array(0, 1))" \
+ gdb_test "python print (ar\[0\].cast(ar\[0\].type.array(0, 1)))" \
".1, 2." "cast to array with two arguments"
- gdb_test "python print ar\[0\].type == ar\[0\].type" "True"
+ gdb_test "python print (ar\[0\].type == ar\[0\].type)" "True"
# Test gdb.Type.vector.
# Note: vectors cast differently than arrays. Here ar[0] is replicated
# for the size of the vector.
gdb_py_test_silent_cmd \
"python vec1 = ar\[0\].cast(ar\[0\].type.vector(1))" "set vec1" 1
- gdb_test "python print vec1" ".1, 1." "cast to vector with one argument"
+ gdb_test "python print (vec1)" ".1, 1." "cast to vector with one argument"
gdb_py_test_silent_cmd \
"python vec2 = ar\[0\].cast(ar\[0\].type.vector(0, 1))" "set vec2" 1
- gdb_test "python print vec2" ".1, 1." "cast to vector with two arguments"
- gdb_test "python print vec1 == vec2" "True"
+ gdb_test "python print (vec2)" ".1, 1." "cast to vector with two arguments"
+ gdb_test "python print (vec1 == vec2)" "True"
gdb_py_test_silent_cmd \
"python vec3 = ar\[1\].cast(ar\[1\].type.vector(1))" "set vec3" 1
- gdb_test "python print vec1 == vec3" "False"
+ gdb_test "python print (vec1 == vec3)" "False"
}
}
gdb_py_test_silent_cmd "print e" "print value (e)" 1
gdb_py_test_silent_cmd "python e = gdb.history (0)" "get value (e) from history" 1
gdb_py_test_silent_cmd "python fields = e.type.fields()" "extract type fields from e" 1
- gdb_test "python print len(fields)" "3" "Check the number of enum fields"
- gdb_test "python print fields\[0\].name" "v1" "Check enum field\[0\] name"
- gdb_test "python print fields\[1\].name" "v2" "Check enum field\[1\]name"
+ gdb_test "python print (len(fields))" "3" "Check the number of enum fields"
+ gdb_test "python print (fields\[0\].name)" "v1" "Check enum field\[0\] name"
+ gdb_test "python print (fields\[1\].name)" "v2" "Check enum field\[1\]name"
# Ditto but by mapping operations
- gdb_test "python print len(e.type)" "3" "Check the number of type fields"
- gdb_test "python print e.type\['v1'\].name" "v1" "Check enum field lookup by name (v1)"
- gdb_test "python print e.type\['v3'\].name" "v3" "Check enum field lookup by name (v2)"
- gdb_test "python print \[v.enumval for v in e.type.itervalues()\]" {\[0L, 1L, 2L\]} "Check num fields iteration over values"
- gdb_test "python print \[(n, v.enumval) for (n, v) in e.type.items()\]" {\[\('v1', 0L\), \('v2', 1L\), \('v3', 2L\)\]} "Check enum fields items list"
+ gdb_test "python print (len(e.type))" "3" "Check the number of type fields"
+ gdb_test "python print (e.type\['v1'\].name)" "v1" "Check enum field lookup by name (v1)"
+ gdb_test "python print (e.type\['v3'\].name)" "v3" "Check enum field lookup by name (v2)"
+ gdb_test "python print (\[v.enumval for v in e.type.itervalues()\])" {\[0L?, 1L?, 2L?\]} "Check num fields iteration over values"
+ gdb_test "python print (\[(n, v.enumval) for (n, v) in e.type.items()\])" {\[\('v1', 0L?\), \('v2', 1L?\), \('v3', 2L?\)\]} "Check enum fields items list"
}
}
proc test_base_class {} {
gdb_py_test_silent_cmd "print d" "print value (d)" 1
gdb_py_test_silent_cmd "python d = gdb.history (0)" "get value (d) from history" 1
gdb_py_test_silent_cmd "python fields = d.type.fields()" "extract type fields from d" 1
- gdb_test "python print len(fields)" "3" "Check the number of fields"
- gdb_test "python print fields\[0\].is_base_class" "True" "Check base class (fields\[0\])"
- gdb_test "python print fields\[1\].is_base_class" "False" "Check base class (fields\[1\])"
+ gdb_test "python print (len(fields))" "3" "Check the number of fields"
+ gdb_test "python print (fields\[0\].is_base_class)" "True" "Check base class (fields\[0\])"
+ gdb_test "python print (fields\[1\].is_base_class)" "False" "Check base class (fields\[1\])"
}
}
# Test a valid range request.
gdb_py_test_silent_cmd "print ar" "print value (ar)" 1
gdb_py_test_silent_cmd "python ar = gdb.history (0)" "get value (ar) from history" 1
- gdb_test "python print len(ar.type.range())" "2" "Check correct tuple length"
- gdb_test "python print ar.type.range()\[0\]" "0" "Check range low bound"
- gdb_test "python print ar.type.range()\[1\]" "1" "Check range high bound"
+ gdb_test "python print (len(ar.type.range()))" "2" "Check correct tuple length"
+ gdb_test "python print (ar.type.range()\[0\])" "0" "Check range low bound"
+ gdb_test "python print (ar.type.range()\[1\])" "1" "Check range high bound"
}
with_test_prefix "on ranged type" {
gdb_py_test_silent_cmd "print ar" "print value (ar)" 1
gdb_py_test_silent_cmd "python ar = gdb.history (0)" "get value (ar) from history" 1
gdb_py_test_silent_cmd "python fields = ar.type.fields()" "get fields" 1
- gdb_test "python print fields\[0\].type.range()\[0\]" "0" "Check range low bound"
- gdb_test "python print fields\[0\].type.range()\[1\]" "1" "Check range high bound"
+ gdb_test "python print (fields\[0\].type.range()\[0\])" "0" "Check range low bound"
+ gdb_test "python print (fields\[0\].type.range()\[1\])" "1" "Check range high bound"
}
with_test_prefix "on unranged value" {
# Test where a range does not exist.
gdb_py_test_silent_cmd "print st" "print value (st)" 1
gdb_py_test_silent_cmd "python st = gdb.history (0)" "get value (st) from history" 1
- gdb_test "python print st.type.range()" "RuntimeError: This type does not have a range.*" "Check range for non ranged type."
+ gdb_test "python print (st.type.range())" "RuntimeError: This type does not have a range.*" "Check range for non ranged type."
}
}
}
"get type of temvar" \
1
- gdb_test "python print ttype.template_argument(0)" "D"
- gdb_test "python print isinstance(ttype.template_argument(0), gdb.Type)" \
+ gdb_test "python print (ttype.template_argument(0))" "D"
+ gdb_test "python print (isinstance(ttype.template_argument(0), gdb.Type))" \
"True"
# The next two tests require a GCC that emits DW_TAG_template_*.
set have_older_gcc 1
}
if $have_older_gcc { setup_xfail *-*-* }
- gdb_test "python print ttype.template_argument(1)" "23"
+ gdb_test "python print (ttype.template_argument(1))" "23"
if $have_older_gcc { setup_xfail *-*-* }
- gdb_test "python print isinstance(ttype.template_argument(1), gdb.Value)" \
+ gdb_test "python print (isinstance(ttype.template_argument(1), gdb.Value))" \
"True"
if {[test_compiler_info {gcc-[0-3]-*}]
|| [test_compiler_info {gcc-4-[0-5]-*}]} {
setup_xfail "gcc/46955" *-*-*
}
- gdb_test "python print ttype.template_argument(2)" "&C::c"
+ gdb_test "python print (ttype.template_argument(2))" "&C::c"
}
# Perform C Tests.
gdb_breakpoint [gdb_get_line_number "Break here."]
gdb_continue_to_breakpoint "Break here" ".*Break here.*"
-gdb_test "python print str(gdb.parse_and_eval(\"a\").type)" "const A &"
-gdb_test "python print str(gdb.parse_and_eval(\"a\").referenced_value().type)" "const A"
-gdb_test "python print str(gdb.parse_and_eval(\"int_ref\").type)" "int &"
-gdb_test "python print str(gdb.parse_and_eval(\"int_ref\").referenced_value().type)" "int"
-gdb_test "python print str(gdb.parse_and_eval(\"int_ref\").referenced_value())" "10"
-
-gdb_test "python print str(gdb.parse_and_eval(\"int_ptr_ref\").dereference().type)" "int"
-gdb_test "python print str(gdb.parse_and_eval(\"int_ptr_ref\").referenced_value().type)" "int_ptr"
-gdb_test "python print str(gdb.parse_and_eval(\"int_ptr_ref\").referenced_value().dereference())" "10"
-gdb_test "python print str(gdb.parse_and_eval(\"int_ptr_ref\").referenced_value().referenced_value())" "10"
+gdb_test "python print (str(gdb.parse_and_eval(\"a\").type))" "const A &"
+gdb_test "python print (str(gdb.parse_and_eval(\"a\").referenced_value().type))" "const A"
+gdb_test "python print (str(gdb.parse_and_eval(\"int_ref\").type))" "int &"
+gdb_test "python print (str(gdb.parse_and_eval(\"int_ref\").referenced_value().type))" "int"
+gdb_test "python print (str(gdb.parse_and_eval(\"int_ref\").referenced_value()))" "10"
+
+gdb_test "python print (str(gdb.parse_and_eval(\"int_ptr_ref\").dereference().type))" "int"
+gdb_test "python print (str(gdb.parse_and_eval(\"int_ptr_ref\").referenced_value().type))" "int_ptr"
+gdb_test "python print (str(gdb.parse_and_eval(\"int_ptr_ref\").referenced_value().dereference()))" "10"
+gdb_test "python print (str(gdb.parse_and_eval(\"int_ptr_ref\").referenced_value().referenced_value()))" "10"
proc test_value_creation {} {
global gdb_prompt
+ global gdb_py_is_py3k
gdb_py_test_silent_cmd "python i = gdb.Value (True)" "create boolean value" 1
gdb_py_test_silent_cmd "python i = gdb.Value (5)" "create integer value" 1
- gdb_py_test_silent_cmd "python i = gdb.Value (5L)" "create long value" 1
+ if { $gdb_py_is_py3k == 0 } {
+ gdb_py_test_silent_cmd "python i = gdb.Value (5L)" "create long value" 1
+ }
gdb_py_test_silent_cmd "python f = gdb.Value (1.25)" "create double value" 1
gdb_py_test_silent_cmd "python a = gdb.Value ('string test')" "create 8-bit string value" 1
- gdb_test "python print a" "\"string test\"" "print 8-bit string"
- gdb_test "python print a.__class__" "<type 'gdb.Value'>" "verify type of 8-bit string"
- gdb_py_test_silent_cmd "python a = gdb.Value (u'unicode test')" "create unicode value" 1
- gdb_test "python print a" "\"unicode test\"" "print Unicode string"
- gdb_test "python print a.__class__" "<type 'gdb.Value'>" "verify type of unicode string"
+ gdb_test "python print (a)" "\"string test\"" "print 8-bit string"
+ gdb_test "python print (a.__class__)" "<(type|class) 'gdb.Value'>" "verify type of 8-bit string"
+ if { $gdb_py_is_py3k == 0 } {
+ gdb_py_test_silent_cmd "python a = gdb.Value (u'unicode test')" "create unicode value" 1
+ gdb_test "python print (a)" "\"unicode test\"" "print Unicode string"
+ gdb_test "python print (a.__class__)" "<(type|class) 'gdb.Value'>" "verify type of unicode string"
+ }
# Test address attribute is None in a non-addressable value
- gdb_test "python print 'result =', i.address" "= None" "Test address attribute in non-addressable value"
+ gdb_test "python print ('result = %s' % i.address)" "= None" "Test address attribute in non-addressable value"
}
proc test_value_numeric_ops {} {
gdb_py_test_silent_cmd "python j = gdb.Value (2)" "create second integer value" 0
gdb_py_test_silent_cmd "python f = gdb.Value (1.25)" "create first double value" 0
gdb_py_test_silent_cmd "python g = gdb.Value (2.5)" "create second double value" 0
- gdb_test "python print 'result = ' + str(i+j)" " = 7" "add two integer values"
- gdb_test "python print (i+j).__class__" "<type 'gdb.Value'>" "verify type of integer add result"
-
- gdb_test "python print 'result = ' + str(f+g)" " = 3.75" "add two double values"
- gdb_test "python print 'result = ' + str(i-j)" " = 3" "subtract two integer values"
- gdb_test "python print 'result = ' + str(f-g)" " = -1.25" "subtract two double values"
- gdb_test "python print 'result = ' + str(i*j)" " = 10" "multiply two integer values"
- gdb_test "python print 'result = ' + str(f*g)" " = 3.125" "multiply two double values"
- gdb_test "python print 'result = ' + str(i/j)" " = 2" "divide two integer values"
- gdb_test "python print 'result = ' + str(f/g)" " = 0.5" "divide two double values"
- gdb_test "python print 'result = ' + str(i%j)" " = 1" "take remainder of two integer values"
+ gdb_test "python print ('result = ' + str(i+j))" " = 7" "add two integer values"
+ gdb_test "python print ((i+j).__class__)" "<(type|class) 'gdb.Value'>" "verify type of integer add result"
+
+ gdb_test "python print ('result = ' + str(f+g))" " = 3.75" "add two double values"
+ gdb_test "python print ('result = ' + str(i-j))" " = 3" "subtract two integer values"
+ gdb_test "python print ('result = ' + str(f-g))" " = -1.25" "subtract two double values"
+ gdb_test "python print ('result = ' + str(i*j))" " = 10" "multiply two integer values"
+ gdb_test "python print ('result = ' + str(f*g))" " = 3.125" "multiply two double values"
+ gdb_test "python print ('result = ' + str(i/j))" " = 2" "divide two integer values"
+ gdb_test "python print ('result = ' + str(f/g))" " = 0.5" "divide two double values"
+ gdb_test "python print ('result = ' + str(i%j))" " = 1" "take remainder of two integer values"
# Remainder of float is implemented in Python but not in GDB's value system.
- gdb_test "python print 'result = ' + str(i**j)" " = 25" "integer value raised to the power of another integer value"
- gdb_test "python print 'result = ' + str(g**j)" " = 6.25" "double value raised to the power of integer value"
+ gdb_test "python print ('result = ' + str(i**j))" " = 25" "integer value raised to the power of another integer value"
+ gdb_test "python print ('result = ' + str(g**j))" " = 6.25" "double value raised to the power of integer value"
- gdb_test "python print 'result = ' + str(-i)" " = -5" "negated integer value"
- gdb_test "python print 'result = ' + str(+i)" " = 5" "positive integer value"
- gdb_test "python print 'result = ' + str(-f)" " = -1.25" "negated double value"
- gdb_test "python print 'result = ' + str(+f)" " = 1.25" "positive double value"
- gdb_test "python print 'result = ' + str(abs(j-i))" " = 3" "absolute of integer value"
- gdb_test "python print 'result = ' + str(abs(f-g))" " = 1.25" "absolute of double value"
+ gdb_test "python print ('result = ' + str(-i))" " = -5" "negated integer value"
+ gdb_test "python print ('result = ' + str(+i))" " = 5" "positive integer value"
+ gdb_test "python print ('result = ' + str(-f))" " = -1.25" "negated double value"
+ gdb_test "python print ('result = ' + str(+f))" " = 1.25" "positive double value"
+ gdb_test "python print ('result = ' + str(abs(j-i)))" " = 3" "absolute of integer value"
+ gdb_test "python print ('result = ' + str(abs(f-g)))" " = 1.25" "absolute of double value"
# Test gdb.Value mixed with Python types.
- gdb_test "python print 'result = ' + str(i-1)" " = 4" "subtract integer value from python integer"
- gdb_test "python print (i-1).__class__" "<type 'gdb.Value'>" "verify type of mixed integer subtraction result"
- gdb_test "python print 'result = ' + str(f+1.5)" " = 2.75" "add double value with python float"
+ gdb_test "python print ('result = ' + str(i-1))" " = 4" "subtract integer value from python integer"
+ gdb_test "python print ((i-1).__class__)" "<(type|class) 'gdb.Value'>" "verify type of mixed integer subtraction result"
+ gdb_test "python print ('result = ' + str(f+1.5))" " = 2.75" "add double value with python float"
- gdb_test "python print 'result = ' + str(1-i)" " = -4" "subtract python integer from integer value"
- gdb_test "python print 'result = ' + str(1.5+f)" " = 2.75" "add python float with double value"
+ gdb_test "python print ('result = ' + str(1-i))" " = -4" "subtract python integer from integer value"
+ gdb_test "python print ('result = ' + str(1.5+f))" " = 2.75" "add python float with double value"
# Conversion test.
gdb_test "print evalue" " = TWO"
gdb_test_no_output "python evalue = gdb.history (0)"
- gdb_test "python print int (evalue)" "2"
+ gdb_test "python print (int (evalue))" "2"
# Test pointer arithmethic
gdb_test "print (void *) 5" ".*" ""
gdb_test_no_output "python b = gdb.history (0)" ""
- gdb_test "python print 'result = ' + str(a+5)" " = 0x7( <.*>)?" "add pointer value with python integer"
- gdb_test "python print 'result = ' + str(b-2)" " = 0x3( <.*>)?" "subtract python integer from pointer value"
- gdb_test "python print 'result = ' + str(b-a)" " = 3" "subtract two pointer values"
+ gdb_test "python print ('result = ' + str(a+5))" " = 0x7( <.*>)?" "add pointer value with python integer"
+ gdb_test "python print ('result = ' + str(b-2))" " = 0x3( <.*>)?" "subtract python integer from pointer value"
+ gdb_test "python print ('result = ' + str(b-a))" " = 3" "subtract two pointer values"
# Test some invalid operations.
- gdb_test_multiple "python print 'result = ' + str(i+'foo')" "catch error in python type conversion" {
+ gdb_test_multiple "python print ('result = ' + str(i+'foo'))" "catch error in python type conversion" {
-re "Argument to arithmetic operation not a number or boolean.*$gdb_prompt $" {pass "catch error in python type conversion"}
-re "result = .*$gdb_prompt $" {fail "catch error in python type conversion"}
-re "$gdb_prompt $" {fail "catch error in python type conversion"}
}
- gdb_test_multiple "python print 'result = ' + str(i+gdb.Value('foo'))" "catch throw of GDB error" {
+ gdb_test_multiple "python print ('result = ' + str(i+gdb.Value('foo')))" "catch throw of GDB error" {
-re "Traceback.*$gdb_prompt $" {pass "catch throw of GDB error"}
-re "result = .*$gdb_prompt $" {fail "catch throw of GDB error"}
-re "$gdb_prompt $" {fail "catch throw of GDB error"}
"python" "" \
"def test_bool (val):" "" \
" if val:" "" \
- " print 'yay'" "" \
+ " print ('yay')" "" \
" else:" "" \
- " print 'nay'" "" \
+ " print ('nay')" "" \
"end" ""
gdb_test "py test_bool (gdb.Value (True))" "yay" "check evaluation of true boolean value in expression"
}
proc test_value_compare {} {
- gdb_test "py print gdb.Value (1) < gdb.Value (1)" "False" "less than, equal"
- gdb_test "py print gdb.Value (1) < gdb.Value (2)" "True" "less than, less"
- gdb_test "py print gdb.Value (2) < gdb.Value (1)" "False" "less than, greater"
- gdb_test "py print gdb.Value (2) < None" "False" "less than, None"
-
- gdb_test "py print gdb.Value (1) <= gdb.Value (1)" "True" "less or equal, equal"
- gdb_test "py print gdb.Value (1) <= gdb.Value (2)" "True" "less or equal, less"
- gdb_test "py print gdb.Value (2) <= gdb.Value (1)" "False" "less or equal, greater"
- gdb_test "py print gdb.Value (2) <= None" "False" "less or equal, None"
-
- gdb_test "py print gdb.Value (1) == gdb.Value (1)" "True" "equality of gdb.Values"
- gdb_test "py print gdb.Value (1) == gdb.Value (2)" "False" "inequality of gdb.Values"
- gdb_test "py print gdb.Value (1) == 1.0" "True" "equality of gdb.Value with Python value"
- gdb_test "py print gdb.Value (1) == 2" "False" "inequality of gdb.Value with Python value"
- gdb_test "py print gdb.Value (1) == None" "False" "inequality of gdb.Value with None"
-
- gdb_test "py print gdb.Value (1) != gdb.Value (1)" "False" "inequality, false"
- gdb_test "py print gdb.Value (1) != gdb.Value (2)" "True" "inequality, true"
- gdb_test "py print gdb.Value (1) != None" "True" "inequality, None"
-
- gdb_test "py print gdb.Value (1) > gdb.Value (1)" "False" "greater than, equal"
- gdb_test "py print gdb.Value (1) > gdb.Value (2)" "False" "greater than, less"
- gdb_test "py print gdb.Value (2) > gdb.Value (1)" "True" "greater than, greater"
- gdb_test "py print gdb.Value (2) > None" "True" "greater than, None"
-
- gdb_test "py print gdb.Value (1) >= gdb.Value (1)" "True" "greater or equal, equal"
- gdb_test "py print gdb.Value (1) >= gdb.Value (2)" "False" "greater or equal, less"
- gdb_test "py print gdb.Value (2) >= gdb.Value (1)" "True" "greater or equal, greater"
- gdb_test "py print gdb.Value (2) >= None" "True" "greater or equal, None"
+ gdb_test "py print (gdb.Value (1) < gdb.Value (1))" "False" "less than, equal"
+ gdb_test "py print (gdb.Value (1) < gdb.Value (2))" "True" "less than, less"
+ gdb_test "py print (gdb.Value (2) < gdb.Value (1))" "False" "less than, greater"
+ gdb_test "py print (gdb.Value (2) < None)" "False" "less than, None"
+
+ gdb_test "py print (gdb.Value (1) <= gdb.Value (1))" "True" "less or equal, equal"
+ gdb_test "py print (gdb.Value (1) <= gdb.Value (2))" "True" "less or equal, less"
+ gdb_test "py print (gdb.Value (2) <= gdb.Value (1))" "False" "less or equal, greater"
+ gdb_test "py print (gdb.Value (2) <= None)" "False" "less or equal, None"
+
+ gdb_test "py print (gdb.Value (1) == gdb.Value (1))" "True" "equality of gdb.Values"
+ gdb_test "py print (gdb.Value (1) == gdb.Value (2))" "False" "inequality of gdb.Values"
+ gdb_test "py print (gdb.Value (1) == 1.0)" "True" "equality of gdb.Value with Python value"
+ gdb_test "py print (gdb.Value (1) == 2)" "False" "inequality of gdb.Value with Python value"
+ gdb_test "py print (gdb.Value (1) == None)" "False" "inequality of gdb.Value with None"
+
+ gdb_test "py print (gdb.Value (1) != gdb.Value (1))" "False" "inequality, false"
+ gdb_test "py print (gdb.Value (1) != gdb.Value (2))" "True" "inequality, true"
+ gdb_test "py print (gdb.Value (1) != None)" "True" "inequality, None"
+
+ gdb_test "py print (gdb.Value (1) > gdb.Value (1))" "False" "greater than, equal"
+ gdb_test "py print (gdb.Value (1) > gdb.Value (2))" "False" "greater than, less"
+ gdb_test "py print (gdb.Value (2) > gdb.Value (1))" "True" "greater than, greater"
+ gdb_test "py print (gdb.Value (2) > None)" "True" "greater than, None"
+
+ gdb_test "py print (gdb.Value (1) >= gdb.Value (1))" "True" "greater or equal, equal"
+ gdb_test "py print (gdb.Value (1) >= gdb.Value (2))" "False" "greater or equal, less"
+ gdb_test "py print (gdb.Value (2) >= gdb.Value (1))" "True" "greater or equal, greater"
+ gdb_test "py print (gdb.Value (2) >= None)" "True" "greater or equal, None"
}
proc test_value_in_inferior {} {
global gdb_prompt
global testfile
+ global gdb_py_is_py3k
gdb_breakpoint [gdb_get_line_number "break to inspect struct and union"]
gdb_py_test_silent_cmd "python s = gdb.history (0)" "get value from history" 1
- gdb_test "python print 'result = ' + str(s\['a'\])" " = 3" "access element inside struct using 8-bit string name"
- gdb_test "python print 'result = ' + str(s\[u'a'\])" " = 3" "access element inside struct using unicode name"
+ gdb_test "python print ('result = ' + str(s\['a'\]))" " = 3" "access element inside struct using 8-bit string name"
+ if { $gdb_py_is_py3k == 0 } {
+ gdb_test "python print ('result = ' + str(s\[u'a'\]))" " = 3" "access element inside struct using unicode name"
+ }
# Test dereferencing the argv pointer
# Check that the dereferenced value is sane
if { ! [target_info exists noargs] } {
- gdb_test "python print arg0" "0x.*$testfile\"" "verify dereferenced value"
+ gdb_test "python print (arg0)" "0x.*$testfile\"" "verify dereferenced value"
}
# Smoke-test is_optimized_out attribute
- gdb_test "python print 'result =', arg0.is_optimized_out" "= False" "Test is_optimized_out attribute"
+ gdb_test "python print ('result = %s' % arg0.is_optimized_out)" "= False" "Test is_optimized_out attribute"
# Test address attribute
- gdb_test "python print 'result =', arg0.address" "= 0x\[\[:xdigit:\]\]+" "Test address attribute"
+ gdb_test "python print ('result = %s' % arg0.address)" "= 0x\[\[:xdigit:\]\]+" "Test address attribute"
# Test displaying a variable that is temporarily at a bad address.
# But if we can examine what's at memory address 0, then we'll also be
if {$can_read_0} {
untested $test
} else {
- gdb_test "python print gdb.parse_and_eval('*(int*)0')" "gdb.MemoryError: Cannot access memory at address 0x0.*" $test
+ gdb_test "python print (gdb.parse_and_eval('*(int*)0'))" "gdb.MemoryError: Cannot access memory at address 0x0.*" $test
}
# Test Python lazy value handling
untested $test
} else {
gdb_test "python inval = gdb.parse_and_eval('*(int*)0')"
- gdb_test "python print inval.is_lazy" "True"
+ gdb_test "python print (inval.is_lazy)" "True"
gdb_test "python inval2 = inval+1" "gdb.MemoryError: Cannot access memory at address 0x0.*" $test
gdb_test "python inval.fetch_lazy ()" "gdb.MemoryError: Cannot access memory at address 0x0.*" $test
}
gdb_test "python argc_lazy = gdb.parse_and_eval('argc')"
gdb_test "python argc_notlazy = gdb.parse_and_eval('argc')"
gdb_test "python argc_notlazy.fetch_lazy()"
- gdb_test "python print argc_lazy.is_lazy" "True"
- gdb_test "python print argc_notlazy.is_lazy" "False"
+ gdb_test "python print (argc_lazy.is_lazy)" "True"
+ gdb_test "python print (argc_notlazy.is_lazy)" "False"
gdb_test "print argc" " = 1" "sanity check argc"
- gdb_test "python print argc_lazy.is_lazy" "\r\nTrue"
+ gdb_test "python print (argc_lazy.is_lazy)" "\r\nTrue"
gdb_test_no_output "set argc=2"
- gdb_test "python print argc_notlazy" "\r\n1"
- gdb_test "python print argc_lazy" "\r\n2"
- gdb_test "python print argc_lazy.is_lazy" "False"
+ gdb_test "python print (argc_notlazy)" "\r\n1"
+ gdb_test "python print (argc_lazy)" "\r\n2"
+ gdb_test "python print (argc_lazy.is_lazy)" "False"
# Test string fetches, both partial and whole.
gdb_test "print st" "\"divide et impera\""
gdb_py_test_silent_cmd "python st = gdb.history (0)" "get value from history" 1
- gdb_test "python print st.string ()" "divide et impera" "Test string with no length"
- gdb_test "python print st.string (length = -1)" "divide et impera" "Test string (length = -1) is all of the string"
- gdb_test "python print st.string (length = 6)" "divide"
- gdb_test "python print \"---\"+st.string (length = 0)+\"---\"" "------" "Test string (length = 0) is empty"
- gdb_test "python print len(st.string (length = 0))" "0" "Test length is 0"
+ gdb_test "python print (st.string ())" "divide et impera" "Test string with no length"
+ gdb_test "python print (st.string (length = -1))" "divide et impera" "Test string (length = -1) is all of the string"
+ gdb_test "python print (st.string (length = 6))" "divide"
+ gdb_test "python print (\"---\"+st.string (length = 0)+\"---\")" "------" "Test string (length = 0) is empty"
+ gdb_test "python print (len(st.string (length = 0)))" "0" "Test length is 0"
# Fetch a string that has embedded nulls.
gdb_test "print nullst" "\"divide\\\\000et\\\\000impera\".*"
gdb_py_test_silent_cmd "python nullst = gdb.history (0)" "get value from history" 1
- gdb_test "python print nullst.string ()" "divide" "Test string to first null"
+ gdb_test "python print (nullst.string ())" "divide" "Test string to first null"
# Python cannot print strings that contain the null (\0) character.
# For the purposes of this test, use repr()
gdb_py_test_silent_cmd "python nullst = nullst.string (length = 9)" "get string beyond null" 1
- gdb_test "python print repr(nullst)" "u'divide\\\\x00et'"
+ gdb_test "python print (repr(nullst))" "u?'divide\\\\x00et'"
}
proc test_lazy_strings {} {
gdb_py_test_silent_cmd "python sptr = gdb.history (0)" "Get value from history" 1
gdb_py_test_silent_cmd "python lstr = sptr.lazy_string()" "Aquire lazy string" 1
- gdb_test "python print lstr.type" "const char \*." "Test type name equality"
- gdb_test "python print sptr.type" "const char \*." "Test type name equality"
+ gdb_test "python print (lstr.type)" "const char \*." "Test type name equality"
+ gdb_test "python print (sptr.type)" "const char \*." "Test type name equality"
gdb_test "print sn" "0x0"
gdb_py_test_silent_cmd "python snptr = gdb.history (0)" "Get value from history" 1
gdb_test "python snstr = snptr.lazy_string(length=5)" ".*Cannot create a lazy string with address.*" "Test lazy string"
gdb_py_test_silent_cmd "python snstr = snptr.lazy_string(length=0)" "Succesfully create a lazy string" 1
- gdb_test "python print snstr.length" "0" "Test lazy string length"
- gdb_test "python print snstr.address" "0" "Test lazy string address"
+ gdb_test "python print (snstr.length)" "0" "Test lazy string length"
+ gdb_test "python print (snstr.address)" "0" "Test lazy string address"
}
gdb_py_test_silent_cmd "python fp1 = gdb.history (0)" "get value from history" 1
gdb_test "python fp1 = fp1.dereference()" ""
gdb_test "python result = fp1()" ""
- gdb_test "python print result" "void"
+ gdb_test "python print (result)" "void"
# Correct inferior call with arguments.
gdb_test "p/x fp2" " = $hex.*"
gdb_py_test_silent_cmd "python fp2 = gdb.history (0)" "get value from history" 1
gdb_test "python fp2 = fp2.dereference()" ""
gdb_test "python result2 = fp2(10,20)" ""
- gdb_test "python print result2" "30"
+ gdb_test "python print (result2)" "30"
# Incorrect to call an int value.
gdb_test "p i" " = $decimal.*"
# A few objfile tests.
proc test_objfiles {} {
- gdb_test "python\nok=False\nfor file in gdb.objfiles():\n if 'py-value' in file.filename:\n ok=True\nprint ok\nend" "True" \
+ gdb_test "python\nok=False\nfor file in gdb.objfiles():\n if 'py-value' in file.filename:\n ok=True\nprint (ok)\nend" "True" \
"py-value in file.filename"
- gdb_test "python print gdb.objfiles()\[0\].pretty_printers" "\\\[\\\]"
+ gdb_test "python print (gdb.objfiles()\[0\].pretty_printers)" "\\\[\\\]"
gdb_test "python gdb.objfiles()\[0\].pretty_printers = 0" \
"pretty_printers attribute must be a list.*Error while executing Python code."
"delete PTR type" 1
# Now see if the value's type is still valid.
- gdb_test "python print castval.type" "PTR ." \
+ gdb_test "python print (castval.type)" "PTR ." \
"print value's type"
}
"Obtain address" 1
gdb_py_test_silent_cmd "python rptr = gdb.history(0)" \
"Obtains value from GDB" 1
- gdb_test "python print rptr\[0\]" "2" "Check pointer passed as reference"
+ gdb_test "python print (rptr\[0\])" "2" "Check pointer passed as reference"
# Just the most basic test of dynamic_cast -- it is checked in
# the C++ tests.
- gdb_test "python print bool(gdb.parse_and_eval('base').dynamic_cast(gdb.lookup_type('Derived').pointer()))" \
+ gdb_test "python print (bool(gdb.parse_and_eval('base').dynamic_cast(gdb.lookup_type('Derived').pointer())))" \
True
# Likewise.
- gdb_test "python print gdb.parse_and_eval('base').dynamic_type" \
+ gdb_test "python print (gdb.parse_and_eval('base').dynamic_type)" \
"Derived \[*\]"
# A static type case.
- gdb_test "python print gdb.parse_and_eval('5').dynamic_type" \
+ gdb_test "python print (gdb.parse_and_eval('5').dynamic_type)" \
"int"
}
"Create a value for subscript test" 1
# Try to access an int with a subscript. This should fail.
- gdb_test "python print intv" "1" "Baseline print of a Python value"
- gdb_test "python print intv\[0\]" "gdb.error: Cannot subscript requested type.*" \
+ gdb_test "python print (intv)" "1" "Baseline print of a Python value"
+ gdb_test "python print (intv\[0\])" "gdb.error: Cannot subscript requested type.*" \
"Attempt to access an integer with a subscript"
# Try to access a string with a subscript. This should pass.
- gdb_test "python print stringv" "foo." "Baseline print of a Python value"
- gdb_test "python print stringv\[0\]" "f." "Attempt to access a string with a subscript"
+ gdb_test "python print (stringv)" "foo." "Baseline print of a Python value"
+ gdb_test "python print (stringv\[0\])" "f." "Attempt to access a string with a subscript"
# Try to access an int array via a pointer with a subscript. This should pass.
gdb_py_test_silent_cmd "print p" "Build pointer to array" 1
gdb_py_test_silent_cmd "python pointer = gdb.history(0)" "" 1
- gdb_test "python print pointer\[0\]" "1" "Access array via pointer with int subscript"
- gdb_test "python print pointer\[intv\]" "2" "Access array via pointer with value subscript"
+ gdb_test "python print (pointer\[0\])" "1" "Access array via pointer with int subscript"
+ gdb_test "python print (pointer\[intv\])" "2" "Access array via pointer with value subscript"
# Try to access a single dimension array with a subscript to the
# result. This should fail.
- gdb_test "python print pointer\[intv\]\[0\]" "gdb.error: Cannot subscript requested type.*" \
+ gdb_test "python print (pointer\[intv\]\[0\])" "gdb.error: Cannot subscript requested type.*" \
"Attempt to access an integer with a subscript"
# Lastly, test subscript access to an array with multiple
# dimensions. This should pass.
gdb_py_test_silent_cmd "print {\"fu \",\"foo\",\"bar\"}" "Build array" 1
gdb_py_test_silent_cmd "python marray = gdb.history(0)" "" 1
- gdb_test "python print marray\[1\]\[2\]" "o." "Test multiple subscript"
+ gdb_test "python print (marray\[1\]\[2\])" "o." "Test multiple subscript"
}
# A few tests of gdb.parse_and_eval.
proc test_parse_and_eval {} {
- gdb_test "python print gdb.parse_and_eval ('23')" "23" \
+ gdb_test "python print (gdb.parse_and_eval ('23'))" "23" \
"parse_and_eval constant test"
- gdb_test "python print gdb.parse_and_eval ('5 + 7')" "12" \
+ gdb_test "python print (gdb.parse_and_eval ('5 + 7'))" "12" \
"parse_and_eval simple expression test"
- gdb_test "python print type(gdb.parse_and_eval ('5 + 7'))" \
- ".type 'gdb.Value'."\
+ gdb_test "python print (type(gdb.parse_and_eval ('5 + 7')))" \
+ ".(type|class) 'gdb.Value'."\
"parse_and_eval type test"
}
"three = gdb.Value(3)" "" \
"vdict = {one:\"one str\",two:\"two str\",three:\"three str\"}" "" \
"end"
- gdb_test "python print vdict\[one\]" "one str" "Test dictionary hash"
- gdb_test "python print vdict\[two\]" "two str" "Test dictionary hash"
- gdb_test "python print vdict\[three\]" "three str" "Test dictionary hash"
- gdb_test "python print one.__hash__() == hash(one)" "True" "Test inbuilt hash"
+ gdb_test "python print (vdict\[one\])" "one str" "Test dictionary hash"
+ gdb_test "python print (vdict\[two\])" "two str" "Test dictionary hash"
+ gdb_test "python print (vdict\[three\])" "three str" "Test dictionary hash"
+ gdb_test "python print (one.__hash__() == hash(one))" "True" "Test inbuilt hash"
}
# Build C and C++ versions of executable
# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }
-gdb_test_multiple "python print 23" "verify python support" {
+gdb_test_multiple "python print (23)" "verify python support" {
-re "not supported.*$gdb_prompt $" {
unsupported "python support is disabled"
gdb_py_test_multiple "multi-line python command" \
"python" "" \
- "print 23" "" \
+ "print (23)" "" \
"end" "23"
gdb_py_test_multiple "show python command" \
"define zzq" "Type commands for definition of .* just \"end\"\\.*" \
"python" "" \
- "print 23" "" \
+ "print (23)" "" \
"end" "" \
"end" "" \
- "show user zzq" "User command \"zzq\":.* python.*print 23.* end"
+ "show user zzq" "User command \"zzq\":.* python.*print \\(23\\).* end"
gdb_py_test_multiple "indented multi-line python command" \
"python" "" \
"def foo ():" "" \
- " print 'hello, world!'" "" \
+ " print ('hello, world!')" "" \
"foo ()" "" \
"end" "hello, world!"
gdb_test "source -s source2.py" "yes" "source -s source2.py"
-gdb_test "python print gdb.current_objfile()" "None"
-gdb_test "python print gdb.objfiles()" "\\\[\\\]"
+gdb_test "python print (gdb.current_objfile())" "None"
+gdb_test "python print (gdb.objfiles())" "\\\[\\\]"
# Test http://bugs.python.org/issue4434 workaround in configure.ac
-gdb_test "python import itertools; print 'IMPOR'+'TED'" "IMPORTED" "pythonX.Y/lib-dynload/*.so"
+gdb_test "python import itertools; print ('IMPOR'+'TED')" "IMPORTED" "pythonX.Y/lib-dynload/*.so"
gdb_test_no_output \
"python x = gdb.execute('printf \"%d\", 23', to_string = True)"
-gdb_test "python print x" "23"
+gdb_test "python print (x)" "23"
# Test post_event.
gdb_py_test_multiple "post event insertion" \
"gdb.post_event(Foo())" "" \
"end" ""
-gdb_test "python print someVal" "1" "test post event execution"
+gdb_test "python print (someVal)" "1" "test post event execution"
gdb_test "python gdb.post_event(str(1))" "RuntimeError: Posted event is not callable.*" "Test non callable class"
# Test (no) pagination of the executed command.
gdb_test_no_output "set height $lines"
set test "verify pagination beforehand"
-gdb_test_multiple "python print \"\\n\" * $lines" $test {
+gdb_test_multiple "python print (\"\\n\" * $lines)" $test {
-re "---Type <return>" {
exp_continue
}
}
gdb_test "q" "Quit.*Error while executing Python.*" "verify pagination beforehand: q"
-gdb_test "python if gdb.execute('python print \"\\\\n\" * $lines', to_string=True) == \"\\n\" * [expr $lines + 1]: print \"yes\"" "yes" "gdb.execute does not page"
+gdb_test "python if gdb.execute('python print (\"\\\\n\" * $lines)', to_string=True) == \"\\n\" * [expr $lines + 1]: print (\"yes\")" "yes" "gdb.execute does not page"
set test "verify pagination afterwards"
-gdb_test_multiple "python print \"\\n\" * $lines" $test {
+gdb_test_multiple "python print (\"\\n\" * $lines)" $test {
-re "---Type <return>" {
exp_continue
}
gdb_test_no_output "python a = gdb.execute('help', to_string=True)" "collect help from uiout"
-gdb_test "python print a" ".*aliases -- Aliases of other commands.*" "verify help to uiout"
+gdb_test "python print (a)" ".*aliases -- Aliases of other commands.*" "verify help to uiout"
# Test PR 12212, using InfThread.selected_thread() when no inferior is
# loaded.
gdb_py_test_silent_cmd "python nothread = gdb.selected_thread()" "Attempt to aquire thread with no inferior" 1
-gdb_test "python print nothread == None" "True" "Ensure that no threads are returned"
+gdb_test "python print (nothread == None)" "True" "Ensure that no threads are returned"
gdb_py_test_multiple "register atexit function" \
"python" "" \
"import atexit" "" \
"def printit(arg):" "" \
- " print arg" "" \
+ " print (arg)" "" \
"atexit.register(printit, 'good bye world')" "" \
"end" ""
"gdb.error: No source file named main.c.*" "test decode_line no source named main"
gdb_py_test_silent_cmd "python symtab = gdb.decode_line()" "test decode_line current location" 1
-gdb_test "python print len(symtab)" "2" "Test decode_line current location"
-gdb_test "python print symtab\[0\]" "None" "Test decode_line expression parse"
-gdb_test "python print len(symtab\[1\])" "1" "Test decode_line current location"
-gdb_test "python print symtab\[1\]\[0\].symtab" ".*gdb.python/python.c.*" "Test decode_line current locationn filename"
-gdb_test "python print symtab\[1\]\[0\].line" "22" "Test decode_line current location line number"
+gdb_test "python print (len(symtab))" "2" "Test decode_line current location"
+gdb_test "python print (symtab\[0\])" "None" "Test decode_line expression parse"
+gdb_test "python print (len(symtab\[1\]))" "1" "Test decode_line current location"
+gdb_test "python print (symtab\[1\]\[0\].symtab)" ".*gdb.python/python.c.*" "Test decode_line current locationn filename"
+gdb_test "python print (symtab\[1\]\[0\].line)" "22" "Test decode_line current location line number"
gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"python.c:26 if foo\")" "test decode_line python.c:26" 1
-gdb_test "python print len(symtab)" "2" "Test decode_line python.c:26 length"
-gdb_test "python print symtab\[0\]" "if foo" "Test decode_line expression parse"
-gdb_test "python print len(symtab\[1\])" "1" "Test decode_line python.c:26 length"
-gdb_test "python print symtab\[1\]\[0\].symtab" ".*gdb.python/python.c.*" "Test decode_line python.c:26 filename"
-gdb_test "python print symtab\[1\]\[0\].line" "26" "Test decode_line python.c:26 line number"
+gdb_test "python print (len(symtab))" "2" "Test decode_line python.c:26 length"
+gdb_test "python print (symtab\[0\])" "if foo" "Test decode_line expression parse"
+gdb_test "python print (len(symtab\[1\]))" "1" "Test decode_line python.c:26 length"
+gdb_test "python print (symtab\[1\]\[0\].symtab)" ".*gdb.python/python.c.*" "Test decode_line python.c:26 filename"
+gdb_test "python print (symtab\[1\]\[0\].line)" "26" "Test decode_line python.c:26 line number"
gdb_test "python gdb.decode_line(\"randomfunc\")" \
"gdb.error: Function \"randomfunc\" not defined.*" "test decode_line randomfunc"
gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"func1\")" "test decode_line func1()" 1
-gdb_test "python print len(symtab)" "2" "Test decode_line func1 length"
-gdb_test "python print len(symtab\[1\])" "1" "Test decode_line func1 length"
-gdb_test "python print symtab\[1\]\[0\].symtab" ".*gdb.python/python-1.c.*" "Test decode_line func1 filename"
-gdb_test "python print symtab\[1\]\[0\].line" "19" "Test decode_line func1 line number"
+gdb_test "python print (len(symtab))" "2" "Test decode_line func1 length"
+gdb_test "python print (len(symtab\[1\]))" "1" "Test decode_line func1 length"
+gdb_test "python print (symtab\[1\]\[0\].symtab)" ".*gdb.python/python-1.c.*" "Test decode_line func1 filename"
+gdb_test "python print (symtab\[1\]\[0\].line)" "19" "Test decode_line func1 line number"
gdb_py_test_silent_cmd {python symtab = gdb.decode_line ("func1,func2")} \
"test decode_line func1,func2" 1
-gdb_test {python print symtab[0]} ",func2" "stop at comma in linespec"
+gdb_test {python print (symtab[0])} ",func2" "stop at comma in linespec"
# gdb.write
-gdb_test "python print sys.stderr" ".*gdb.GdbOutputErrorFile instance at.*" "Test stderr location"
-gdb_test "python print sys.stdout" ".*gdb.GdbOutputFile instance at.*" "Test stdout location"
+gdb_test "python print (sys.stderr)" ".*gdb.GdbOutputErrorFile (instance|object) at.*" "Test stderr location"
+gdb_test "python print (sys.stdout)" ".*gdb.GdbOutputFile (instance|object) at.*" "Test stdout location"
gdb_test "python gdb.write(\"Foo\\n\")" "Foo" "Test default write"
gdb_test "python gdb.write(\"Error stream\\n\", stream=gdb.STDERR)" "Error stream" "Test stderr write"
gdb_test "python gdb.write(\"Normal stream\\n\", stream=gdb.STDOUT)" "Normal stream" "Test stdout write"
"end" ""
gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook" {
- -re "Python Exception <type 'exceptions.RuntimeError'> Python exception called.*" {
+ -re "Python Exception <(type 'exceptions.|class ')RuntimeError'> Python exception called.*" {
pass "set hook"
}
}
runto [gdb_get_line_number "Break at func2 call site."]
gdb_py_test_silent_cmd "python line = gdb.selected_frame().find_sal().line" "Get line number of func2 call site" 1
-gdb_test "python print gdb.find_pc_line(gdb.selected_frame().pc()).line == line" "True" "Test find_pc_line at func2 call site"
+gdb_test "python print (gdb.find_pc_line(gdb.selected_frame().pc()).line == line)" "True" "Test find_pc_line at func2 call site"
gdb_py_test_silent_cmd "step" "Step into func2" 1
gdb_py_test_silent_cmd "up" "Step out of func2" 1
-gdb_test "python print gdb.find_pc_line(gdb.selected_frame().pc()).line > line" "True" "Test find_pc_line with resume address"
+gdb_test "python print (gdb.find_pc_line(gdb.selected_frame().pc()).line > line)" "True" "Test find_pc_line with resume address"
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-print 'y%ss' % 'e'
+print ('y%ss' % 'e')
proc skip_python_tests {} {
global gdb_prompt
- gdb_test_multiple "python print 'test'" "verify python support" {
+ global gdb_py_is_py3k
+ global gdb_py_is_py24
+
+ gdb_test_multiple "python print ('test')" "verify python support" {
-re "not supported.*$gdb_prompt $" {
unsupported "Python support is disabled."
return 1
-re "$gdb_prompt $" {}
}
+ set gdb_py_is_py24 0
+ gdb_test_multiple "python print (sys.version_info\[0\])" "check if python 3" {
+ -re "3.*$gdb_prompt $" {
+ set gdb_py_is_py3k 1
+ }
+ -re ".*$gdb_prompt $" {
+ set gdb_py_is_py3k 0
+ }
+ }
+ if { $gdb_py_is_py3k == 0 } {
+ gdb_test_multiple "python print (sys.version_info\[1\])" "check if python 2.4" {
+ -re "\[45\].*$gdb_prompt $" {
+ set gdb_py_is_py24 1
+ }
+ -re ".*$gdb_prompt $" {
+ set gdb_py_is_py24 0
+ }
+ }
+ }
+
return 0
}