-# Copyright 2007, 2008 Free Software Foundation, Inc.
+# Copyright 2007-2016 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# Test that breakpoints on C++ constructors work, despite the
# fact that gcc generates several versions of constructor function.
-if $tracelevel then {
- strace $tracelevel
-}
-
if { [skip_cplus_tests] } { continue }
-set prms_id 0
-set bug_id 0
-set testfile "mb-ctor"
-set srcfile ${testfile}.cc
-set binfile ${objdir}/${subdir}/${testfile}
+standard_testfile .cc
-if [get_compiler_info ${binfile} "c++"] {
+if [get_compiler_info "c++"] {
return -1
}
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
- untested mb-ctor.exp
- return -1
+if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} {
+ return -1
}
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
+if ![runto_main] then {
+ perror "couldn't run to breakpoint"
+ continue
+}
# Set a breakpoint with multiple locations
# and a condition.
gdb_test "break 'Derived::Derived(int)'" \
- "Breakpoint.*at.* file .*$srcfile, line.*\\(2 locations\\).*" \
+ "Breakpoint.*at.*: Derived::Derived.int.. \\(2 locations\\).*" \
"set-breakpoint at ctor"
+gdb_breakpoint [gdb_get_line_number "set breakpoint here"]
+
gdb_test "break 'Derived::~Derived()'" \
- "Breakpoint.*at.* file .*$srcfile, line.*\\(2 locations\\).*" \
+ "Breakpoint.*at.*: Derived::~Derived... \\(2 locations\\).*" \
"set-breakpoint at dtor"
-gdb_run_cmd
-gdb_expect {
- -re "Breakpoint \[0-9\]+,.*Derived.*i=7.*$gdb_prompt $" {
- pass "run to breakpoint"
- }
- -re "$gdb_prompt $" {
- fail "run to breakpoint"
- }
- timeout {
- fail "run to breakpoint (timeout)"
- }
-}
+gdb_test "continue" \
+ ".*Breakpoint.*Derived.*i=7.*" \
+ "run to breakpoint 1 v1"
+
+gdb_continue_to_breakpoint "set breakpoint here" ".* breakpoint here"
gdb_test "continue" \
".*Breakpoint.*Derived.*i=15.*" \
- "run to breakpoint 2"
+ "run to breakpoint 1 v2"
+
+gdb_continue_to_breakpoint "set breakpoint here" ".* breakpoint here"
gdb_test "continue" \
".*Breakpoint.*~Derived.*" \
- "run to breakpoint 3"
+ "run to breakpoint 3 v1"
gdb_test "continue" \
".*Breakpoint.*~Derived.*" \
- "run to breakpoint 4"
+ "run to breakpoint 3 v2"
gdb_test "continue" \
".*exited normally.*" \