From 9d622bda566a4980b045631f500c29717ede8186 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Mon, 7 Sep 2015 08:53:24 +0100 Subject: [PATCH] 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. --- gdb/ChangeLog | 5 +++++ gdb/stack.c | 2 +- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/dbx.exp | 6 +----- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 799bf30946c..397b2932897 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-10-12 Andrew Burgess + + * stack.c (func_command): Return early when there is no ARG + string. + 2015-10-12 Andrew Burgess * stack.c: Include safe-ctype.h not ctype.h. diff --git a/gdb/stack.c b/gdb/stack.c index f257ce1962e..e7c7de91015 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -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"); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 9aeefa864ee..74aa6aeb341 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-10-12 Andrew Burgess + + * gdb.base/dbx.exp (test_func): Remove xfails, update expected + results. + 2015-10-12 Yao Qi * gdb.arch/disp-step-insn-reloc.exp: New test case. diff --git a/gdb/testsuite/gdb.base/dbx.exp b/gdb/testsuite/gdb.base/dbx.exp index 19dba62ebac..75cb0fd7a8e 100644 --- a/gdb/testsuite/gdb.base/dbx.exp +++ b/gdb/testsuite/gdb.base/dbx.exp @@ -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.