From b96e292732664fd8c63970ca11c3a9ac92f60ff9 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 20 Aug 2008 11:47:57 +0000 Subject: [PATCH] gdb/ * linespec.c (symtab_from_filename): Also throw NOT_FOUND_ERROR if there are no symbols loaded, instead of throwing a generic error. (decode_variable): Likewise. gdb/testsuite/ * gdb.base/pending.exp: Test pending breakpoints without symbols loaded. --- gdb/ChangeLog | 6 ++++++ gdb/linespec.c | 15 +++++++++------ gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/pending.exp | 26 ++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1d67ce8a731..9194f04a0ab 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2008-08-20 Pedro Alves + + * linespec.c (symtab_from_filename): Also throw NOT_FOUND_ERROR if + there are no symbols loaded, instead of throwing a generic error. + (decode_variable): Likewise. + 2008-08-20 Pedro Alves * objfiles.h (struct obj_section): Remove addr and endaddr fields. diff --git a/gdb/linespec.c b/gdb/linespec.c index 953e726bed5..f83936c5223 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -1556,10 +1556,11 @@ symtab_from_filename (char **argptr, char *p, int is_quote_enclosed, file_symtab = lookup_symtab (copy); if (file_symtab == 0) { - if (!have_full_symbols () && !have_partial_symbols ()) - error (_("No symbol table is loaded. Use the \"file\" command.")); if (not_found_ptr) *not_found_ptr = 1; + if (!have_full_symbols () && !have_partial_symbols ()) + throw_error (NOT_FOUND_ERROR, + _("No symbol table is loaded. Use the \"file\" command.")); throw_error (NOT_FOUND_ERROR, _("No source file named %s."), copy); } @@ -1760,12 +1761,14 @@ decode_variable (char *copy, int funfirstline, char ***canonical, if (msymbol != NULL) return minsym_found (funfirstline, msymbol); - if (!have_full_symbols () && - !have_partial_symbols () && !have_minimal_symbols ()) - error (_("No symbol table is loaded. Use the \"file\" command.")); - if (not_found_ptr) *not_found_ptr = 1; + + if (!have_full_symbols () + && !have_partial_symbols () + && !have_minimal_symbols ()) + throw_error (NOT_FOUND_ERROR, + _("No symbol table is loaded. Use the \"file\" command.")); throw_error (NOT_FOUND_ERROR, _("Function \"%s\" not defined."), copy); } diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 8d7b7ff767b..110832dfc41 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-08-20 Pedro Alves + + * gdb.base/pending.exp: Test pending breakpoints without symbols + loaded. + 2008-08-19 Vladimir Prus * lib/mi-support.exp (mi_expect_stop): Produce diff --git a/gdb/testsuite/gdb.base/pending.exp b/gdb/testsuite/gdb.base/pending.exp index bcca61e2824..48fe57f7c2d 100644 --- a/gdb/testsuite/gdb.base/pending.exp +++ b/gdb/testsuite/gdb.base/pending.exp @@ -54,6 +54,32 @@ if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != "" gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir + +gdb_test_multiple "break pendfunc1" "set pending breakpoint" { + -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" { + gdb_test "y" "Breakpoint.*pendfunc1.*pending." "set pending breakpoint (without symbols)" + } +} + +gdb_test "info break" \ + "Num Type\[ \]+Disp Enb Address\[ \]+What.* +\[0-9\]+\[\t \]+breakpoint keep y.*PENDING.*pendfunc1.*" \ +"single pending breakpoint info (without symbols)" + +gdb_load ${binfile} +gdb_load_shlibs $lib_sl + +set pendfunc1_loc [gdb_get_line_number "y = x + 4" ${libfile}.c] +gdb_test "run" \ +".*Breakpoint.*pendfunc1.*at.*pendshr.c:$pendfunc1_loc.*y = x \\+ 4.*" \ +"run to resolved breakpoint 1 (without symbols)" + +# Restart with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + gdb_load ${binfile} gdb_load_shlibs $lib_sl -- 2.30.2