gdb: Fix bug with dbx style func command.

The func command, available when starting gdb in dbx mode, is supposed
to take a function name and locate the frame for that function in the
stack.  This has been broken for a while due to an invalid check of the
arguments within the worker function.  Fixed in this commit.

gdb/ChangeLog:

	* stack.c (func_command): Return early when there is no ARG
	string.

gdb/testsuite/ChangeLog:

	* gdb.base/dbx.exp (test_func): Remove xfails, update expected
	results.
This commit is contained in:
Andrew Burgess 2015-09-07 08:53:24 +01:00
parent fc58fa65d4
commit 9d622bda56
4 changed files with 12 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2015-10-12 Andrew Burgess <andrew.burgess@embecosm.com>
* stack.c (func_command): Return early when there is no ARG
string.
2015-10-12 Andrew Burgess <andrew.burgess@embecosm.com>
* stack.c: Include safe-ctype.h not ctype.h.

View File

@ -2518,7 +2518,7 @@ func_command (char *arg, int from_tty)
struct function_bounds *func_bounds = NULL;
struct cleanup *cleanups;
if (arg != NULL)
if (arg == NULL)
return;
frame = parse_frame_specification ("0");

View File

@ -1,3 +1,8 @@
2015-10-12 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.base/dbx.exp (test_func): Remove xfails, update expected
results.
2015-10-12 Yao Qi <yao.qi@linaro.org>
* gdb.arch/disp-step-insn-reloc.exp: New test case.

View File

@ -293,15 +293,11 @@ proc test_func { } {
global srcfile2
gdb_test "cont" ".*" "cont 1"
gdb_test "step" ".*"
# This always fails, but it's not clear why. -sts 1999-08-17
setup_xfail "*-*-*"
gdb_test "func sum" "'sum' not within current stack frame\."
set stop_line [gdb_get_line_number "stop-in-sum" $srcfile2]
gdb_test "stop in sum" "Breakpoint.*at.*: file.*sum\.c, line $stop_line\."
gdb_test "cont" ".*" "cont 2"
# This always fails, but it's not clear why. -sts 1999-08-17
setup_xfail "*-*-*"
gdb_test "func print_average" ".*in print_average.*\\(list=.*, low=0, high=6\\).*at.*average\.c:${decimal}\r\n\${decimal}\[ \t\]+total = sum\\(list, low, high\\);"
gdb_test "func print_average" ".*in print_average.*\\(list=.*, low=0, high=6\\).*at.*average\.c:${decimal}\r\n${decimal}\[ \t\]+total = sum\\(list, low, high\\);"
}
# Start with a fresh gdb.