python/19506 -- gdb.Breakpoint address location regression
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.python / py-breakpoint.exp
index af6c5fce3b00a2a59f7cd4854582480b36f3bfec..d1d1b2253f93a35c8eecf408923272a7ad81b5a2 100644 (file)
@@ -462,6 +462,38 @@ proc test_bkpt_temporary { } {
     }
 }
 
+# Test address locations.
+
+proc test_bkpt_address {} {
+    global gdb_prompt decimal srcfile
+
+    # Delete all breakpoints
+    delete_breakpoints
+
+    gdb_test "python gdb.Breakpoint(\"*main\")" \
+       ".*Breakpoint ($decimal)+ at .*$srcfile, line ($decimal)+\."
+
+    gdb_py_test_silent_cmd \
+       "python main_loc = gdb.parse_and_eval(\"main\").address" \
+       "eval address of main" 0
+
+    # Python 2 vs 3 ... Check `int' first. If that fails, try `long'.
+    gdb_test_multiple "python main_addr = int(main_loc)" "int value of main" {
+       -re "Traceback.*$gdb_prompt $" {
+           gdb_test_no_output "python main_addr = long(main_loc)" \
+               "long value of main"
+       }
+       -re "$gdb_prompt $" {
+           pass "int value of main"
+       }
+    }
+
+    # Include whitespace in the linespec to double-check proper
+    # grokking of argument to gdb.Breakpoint.
+    gdb_test "python gdb.Breakpoint(\"  *{}\".format(str(main_addr)))" \
+       ".*Breakpoint ($decimal)+ at .*$srcfile, line ($decimal)+\."
+}
+
 test_bkpt_basic
 test_bkpt_deletion
 test_bkpt_cond_and_cmds
@@ -470,3 +502,4 @@ test_watchpoints
 test_bkpt_internal
 test_bkpt_eval_funcs
 test_bkpt_temporary
+test_bkpt_address
This page took 0.026926 seconds and 4 git commands to generate.