diff options
author | Daniel Jacobowitz <drow@false.org> | 2008-03-21 15:33:11 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2008-03-21 15:33:11 +0000 |
commit | 6214f497d3f1800171978839ef029f712369e2f9 (patch) | |
tree | af177c71d56a8b1a91799e3891ca8e7719631ce0 | |
parent | 6309237547d076d68daaf8f4d0cd55c5964e1411 (diff) | |
download | gdb-6214f497d3f1800171978839ef029f712369e2f9.zip gdb-6214f497d3f1800171978839ef029f712369e2f9.tar.gz gdb-6214f497d3f1800171978839ef029f712369e2f9.tar.bz2 |
2008-03-21 Chris Demetriou <cgd@google.com>
* symtab.c (rbreak_command): Quote symbol name before passing
it to break_command.
* gdb.base/break.exp (rbreak junk): New test for rbreak
"Junk at end of arguments" issue.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/symtab.c | 8 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/break.exp | 42 |
4 files changed, 59 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b56a87e..ef83262 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2008-03-21 Chris Demetriou <cgd@google.com> + + * symtab.c (rbreak_command): Quote symbol name before passing + it to break_command. + 2008-03-21 Daniel Jacobowitz <dan@codesourcery.com> * eval.c (evaluate_subexp_for_address): Clarify error message. diff --git a/gdb/symtab.c b/gdb/symtab.c index 40e31dc..ddd2310 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -3345,7 +3345,13 @@ rbreak_command (char *regexp, int from_tty) } else { - break_command (SYMBOL_LINKAGE_NAME (p->msymbol), from_tty); + char *string = alloca (strlen (SYMBOL_LINKAGE_NAME (p->msymbol)) + + 3); + strcpy (string, "'"); + strcat (string, SYMBOL_LINKAGE_NAME (p->msymbol)); + strcat (string, "'"); + + break_command (string, from_tty); printf_filtered ("<function, no debug info> %s;\n", SYMBOL_PRINT_NAME (p->msymbol)); } diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 0438144..d72ef2b 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-03-21 Chris Demetriou <cgd@google.com> + + * gdb.base/break.exp (rbreak junk): New test for rbreak + "Junk at end of arguments" issue. + 2008-03-21 Daniel Jacobowitz <dan@codesourcery.com> * gdb.base/printcmds.exp (test_print_array_constants): Do not expect diff --git a/gdb/testsuite/gdb.base/break.exp b/gdb/testsuite/gdb.base/break.exp index 0ec70c9..2e042dd 100644 --- a/gdb/testsuite/gdb.base/break.exp +++ b/gdb/testsuite/gdb.base/break.exp @@ -944,6 +944,48 @@ gdb_expect { } +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if [target_info exists gdb_stub] { + gdb_step_for_stub; +} + +# +# test that 'rbreak' on a symbol that may be from a shared library doesn't +# cause a "Junk at end of arguments." error. +# +# On x86 GNU/Linux, this test will choke on e.g. __libc_start_main@plt. +# +# Note that this test won't necessarily choke on all targets even if +# all the rbreak issue is present. rbreak needs to match and set a +# breakpoint on a symbol causes 'break' to choke. +# + +gdb_test "set breakpoint pending on" "" "rbreak junk pending setup" + +# We expect at least one breakpoint to be set when we "rbreak main". +gdb_test "rbreak main" \ + ".*Breakpoint.*at.* file .*$srcfile, line.*" \ + "rbreak junk set breakpoint" + +# Run to a breakpoint. Fail if we see "Junk at end of arguments". +gdb_run_cmd +gdb_expect { + -re "Junk at end of arguments" { + fail "rbreak junk" + } + -re ".*Breakpoint \[0-9\]+,.*$gdb_prompt $" { + pass "rbreak junk" + } + timeout { + fail "rbreak junk (timeout)" + } +} + + # Reset the default arguments for VxWorks if [istarget "*-*-vxworks*"] { set timeout 10 |