9ef07c8ca4
PR breakpoints/11816: * linespec.c (decode_line_1): Parse `function:label' linespecs. (decode_compound): Update. (find_function_symbol): New function. (decode_dollar): Update. (decode_label): Add 'function_symbol' parameter. Handle function-relative labels. (decode_variable): Update. (symbol_found): Add 'function_symbol' parameter. Use label's PC, not its line. Set `special_display' and canonical name for labels. gdb/doc * gdb.texinfo (Specify Location): Document `function:label' linespec. gdb/testsuite * gdb.base/label.exp: Use `main:there' linespec. Add re-running test.
65 lines
1.4 KiB
Text
65 lines
1.4 KiB
Text
# Copyright 2010, 2011 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
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
if $tracelevel then {
|
|
strace $tracelevel
|
|
}
|
|
|
|
|
|
if [is_remote target] then {
|
|
return 0
|
|
}
|
|
|
|
|
|
#
|
|
# test running programs
|
|
#
|
|
|
|
set testfile "label"
|
|
set srcfile ${testfile}.c
|
|
set binfile ${objdir}/${subdir}/${testfile}
|
|
|
|
if { [prepare_for_testing ${testfile}.exp $testfile ${testfile}.c debug] } {
|
|
untested label.exp
|
|
return -1
|
|
}
|
|
|
|
|
|
if {![runto_main]} {
|
|
fail "label tests suppressed"
|
|
return -1
|
|
}
|
|
|
|
gdb_test "break here" \
|
|
"Breakpoint.*at.*" \
|
|
"breakpoint here"
|
|
|
|
gdb_test "break main:there" \
|
|
"Breakpoint.*at.*" \
|
|
"breakpoint there"
|
|
|
|
gdb_test "cont" \
|
|
"Breakpoint 3,.*" \
|
|
"continue to 'there'"
|
|
|
|
gdb_test "cont" \
|
|
"Breakpoint 2,.*" \
|
|
"continue to 'here'"
|
|
|
|
rerun_to_main
|
|
|
|
gdb_test "cont" \
|
|
"Breakpoint 3,.*" \
|
|
"continue to 'there' after re-run"
|