From: Tom Tromey <tromey@redhat.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: gdb-patches@sourceware.org, Ulrich Weigand <uweigand@de.ibm.com>
Subject: Re: RFC: don't set the pspace on ordinary breakpoints
Date: Tue, 08 Nov 2011 20:23:00 -0000 [thread overview]
Message-ID: <m3k47agy8e.fsf@fleche.redhat.com> (raw)
In-Reply-To: <m3obwmh0me.fsf@fleche.redhat.com> (Tom Tromey's message of "Tue, 08 Nov 2011 12:31:37 -0700")
>>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:
Tom> I think I will change linespec to ignore program spaces in this state.
The appended has two parts: the linespec.c change, relative to the big
patch I posted, and the breakpoint.c change I think is needed too. Only
the latter makes sense in the context of this thread.
I *think* the should_be_inserted change is all that was really needed,
after re-reading all the messages in this thread. Let me know what you
think.
The addr_string_to_sals change is there to handle the case where a
breakpoint has hits in just the program space that is in the
executing_startup state. In this situation, linespec can throw an
exception, and if we do not take the "not_found_and_ok" branch, then we
will proceed to disable the breakpoint... which is wrong, we want to
re-set again when the program space is done with startup.
Tom
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 610aece..dd1f935 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -1578,7 +1578,7 @@ should_be_inserted (struct bp_location *bl)
if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
return 0;
- if (bl->pspace->executing_startup)
+ if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
return 0;
/* This is set for example, when we're attached to the parent of a
@@ -11725,6 +11725,7 @@ addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
if (e.error == NOT_FOUND_ERROR
&& (b->condition_not_parsed
|| (b->loc && b->loc->shlib_disabled)
+ || (b->loc && b->loc->pspace->executing_startup)
|| b->enable_state == bp_disabled))
not_found_and_ok = 1;
diff --git a/gdb/linespec.c b/gdb/linespec.c
index 21189d3..c24a7a0 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -351,6 +351,8 @@ iterate_over_all_matching_symtabs (const char *name,
{
if (search_pspace != NULL && search_pspace != pspace)
continue;
+ if (pspace->executing_startup)
+ continue;
set_current_program_space (pspace);
@@ -1327,6 +1329,12 @@ decode_indirect (struct linespec_state *self, char **argptr)
CORE_ADDR pc;
char *initial = *argptr;
+ if (current_program_space->executing_startup)
+ /* The error message doesn't really matter, because this case
+ should only hit during breakpoint reset. */
+ throw_error (NOT_FOUND_ERROR, _("cannot evaluate expressions while "
+ "program space is in startup"));
+
(*argptr)++;
pc = value_as_address (parse_to_comma_and_eval (argptr));
@@ -1872,6 +1880,9 @@ lookup_prefix_sym (char **argptr, char *p, VEC (symtab_p) *file_symtabs,
{
struct block *search_block;
+ /* Program spaces that are executing startup should have
+ been filtered out earlier. */
+ gdb_assert (!SYMTAB_PSPACE (elt)->executing_startup);
set_current_program_space (SYMTAB_PSPACE (elt));
search_block = get_search_block (elt);
iterate_over_symbols (search_block, copy, STRUCT_DOMAIN,
@@ -2020,6 +2031,9 @@ find_method (struct linespec_state *self, char *saved_arg,
struct type *t;
struct program_space *pspace;
+ /* Program spaces that are executing startup should have
+ been filtered out earlier. */
+ gdb_assert (!SYMTAB_PSPACE (SYMBOL_SYMTAB (sym))->executing_startup);
pspace = SYMTAB_PSPACE (SYMBOL_SYMTAB (sym));
set_current_program_space (pspace);
t = check_typedef (SYMBOL_TYPE (sym));
@@ -2122,6 +2136,9 @@ collect_symtabs_from_filename (const char *file)
/* Find that file's data. */
ALL_PSPACES (pspace)
{
+ if (pspace->executing_startup)
+ continue;
+
set_current_program_space (pspace);
iterate_over_symtabs (file, add_symtabs_to_list, &collector);
}
@@ -2698,6 +2715,8 @@ search_minsyms_for_name (struct collect_info *info, const char *name,
{
if (search_pspace != NULL && search_pspace != pspace)
continue;
+ if (pspace->executing_startup)
+ continue;
set_current_program_space (pspace);
@@ -2734,6 +2753,9 @@ add_matching_symbols_to_info (const char *name,
}
else if (pspace == NULL || pspace == SYMTAB_PSPACE (elt))
{
+ /* Program spaces that are executing startup should have
+ been filtered out earlier. */
+ gdb_assert (!SYMTAB_PSPACE (elt)->executing_startup);
set_current_program_space (SYMTAB_PSPACE (elt));
iterate_over_symbols (get_search_block (elt), name,
VAR_DOMAIN, collect_symbols,
next prev parent reply other threads:[~2011-11-08 20:23 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-27 15:32 Tom Tromey
2011-10-31 1:03 ` Jan Kratochvil
2011-10-31 12:07 ` Yao Qi
2011-11-02 18:55 ` Pedro Alves
2011-11-02 19:47 ` Tom Tromey
2011-11-02 20:21 ` Pedro Alves
2011-11-03 14:01 ` Tom Tromey
2011-11-03 16:02 ` Pedro Alves
2011-11-03 19:33 ` Ulrich Weigand
2011-11-08 19:32 ` Tom Tromey
2011-11-08 20:23 ` Tom Tromey [this message]
2011-11-09 18:24 ` Tom Tromey
2011-11-09 18:30 ` Pedro Alves
2011-11-09 18:41 ` Tom Tromey
2011-11-10 16:53 ` Tom Tromey
2011-11-10 17:49 ` Pedro Alves
2011-11-10 17:57 ` Ulrich Weigand
2011-11-10 19:27 ` Tom Tromey
2011-11-10 20:23 ` Tom Tromey
2011-11-11 12:56 ` Ulrich Weigand
2011-11-11 14:47 ` Tom Tromey
2011-11-14 21:12 ` Tom Tromey
2011-11-16 18:37 ` Ulrich Weigand
2011-11-16 21:24 ` Tom Tromey
2011-11-18 18:31 ` Ulrich Weigand
2012-01-02 18:18 ` [7.4 regression] Stand-alone Cell debugging broken (Re: RFC: don't set the pspace on ordinary breakpoints) Ulrich Weigand
2012-01-03 3:15 ` Joel Brobecker
2012-01-03 20:29 ` Tom Tromey
2012-01-04 12:36 ` Ulrich Weigand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3k47agy8e.fsf@fleche.redhat.com \
--to=tromey@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=pedro@codesourcery.com \
--cc=uweigand@de.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox