From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: Vladimir Prus <vladimir@codesourcery.com>
Cc: Tom Tromey <tromey@redhat.com>, gdb-patches@sourceware.org
Subject: Re: [patch 4/8] Types GC [varobj_list to all_root_varobjs]
Date: Sat, 04 Jul 2009 21:11:00 -0000 [thread overview]
Message-ID: <20090704210912.GA1600@host0.dyn.jankratochvil.net> (raw)
In-Reply-To: <200907021409.39886.vladimir@codesourcery.com>
On Thu, 02 Jul 2009 12:09:39 +0200, Vladimir Prus wrote:
> On Thursday 02 July 2009 Jan Kratochvil wrote:
> > Is it OK to check it in, Vladimir? The patch would go in unchanged:
> > http://sourceware.org/ml/gdb-patches/2009-05/msg00547.html
>
> Is this cleanup-only patch?
Yes.
> I am a bit concerned that it appears to increase code size,
all_root_varobjs fully replaced the varobj_list function which just could not
be deleted as it was still used by varobj_invalidate. varobj_invalidate was
rewritten in a later patch where varobj_list could be finally dropped:
[patch 8/8] Types GC [varobj]
http://sourceware.org/ml/gdb-patches/2009-05/msg00551.html
> > The `floating' lockup will get fixed by a later patch using this new
> > all_root_varobjs function. A testcase for it was in a now-obsolete patch:
> > [patch] Fix gdb.mi hang on floating VAROBJs
> > http://sourceware.org/ml/gdb-patches/2009-05/msg00433.html
> > This patch itself still does not fix it.
>
> IIUC, the varobj_invalidate problem can be fixed with a small patch below.
Yes, such patch works.
Sending also a code style fixup on top of your fix to make the code more safe
preventing such errors in the future.
Please provide a ChangeLog entry to your fix, check it in and approve the
fixup + a testcase below.
The all_root_varobjs patch / VEC rewrite I will re-send afterwards.
Thanks,
Jan
gdb/
2009-07-02 Jan Kratochvil <jan.kratochvil@redhat.com>
* mi/mi-cmd-var.c (mi_cmd_var_update): Replace a while loop by for loop.
* varobj.c (varobj_invalidate): Replace a while loop by for loop.
gdb/testsuite/
2009-05-25 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.mi/mi2-var-cmd.exp (floating varobj invalidation): New test.
--- a/gdb/mi/mi-cmd-var.c
+++ b/gdb/mi/mi-cmd-var.c
@@ -606,8 +606,7 @@ mi_cmd_var_update (char *command, char **argv, int argc)
do_cleanups (cleanup);
return;
}
- cr = rootlist;
- while (*cr != NULL)
+ for (cr = rootlist; *cr != NULL; cr++)
{
int thread_id = varobj_get_thread_id (*cr);
int thread_stopped = 0;
@@ -624,7 +623,6 @@ mi_cmd_var_update (char *command, char **argv, int argc)
if (thread_stopped)
if (*name == '*' || varobj_floating_p (*cr))
varobj_update_one (*cr, print_values, 0 /* implicit */);
- cr++;
}
do_cleanups (cleanup);
}
--- a/gdb/varobj.c
+++ b/gdb/varobj.c
@@ -3226,16 +3226,13 @@ varobj_invalidate (void)
if (varobj_list (&all_rootvarobj) > 0)
{
- varp = all_rootvarobj;
- while (*varp != NULL)
+ for (varp = all_rootvarobj; *varp != NULL; varp++)
{
/* Floating varobjs are reparsed on each stop, so we don't care if
the presently parsed expression refers to something that's gone.
*/
- if ((*varp)->root->floating) {
- varp++;
+ if ((*varp)->root->floating)
continue;
- }
/* global var must be re-evaluated. */
if ((*varp)->root->valid_block == NULL)
@@ -3257,8 +3254,6 @@ varobj_invalidate (void)
}
else /* locals must be invalidated. */
(*varp)->root->is_valid = 0;
-
- varp++;
}
}
xfree (all_rootvarobj);
--- a/gdb/testsuite/gdb.mi/mi2-var-cmd.exp
+++ b/gdb/testsuite/gdb.mi/mi2-var-cmd.exp
@@ -523,5 +523,9 @@ mi_gdb_test "-var-update selected_a" \
"\\^done,changelist=\\\[\{name=\"selected_a\",in_scope=\"true\",type_changed=\"true\",new_type=\"int\",new_num_children=\"0\"\}\\\]" \
"update selected_a in do_special_tests"
+mi_gdb_test "-file-exec-and-symbols ${binfile}" "\\^done" \
+ "floating varobj invalidation"
+
+
mi_gdb_exit
return 0
next prev parent reply other threads:[~2009-07-04 21:11 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-25 8:02 Jan Kratochvil
2009-06-09 20:50 ` Tom Tromey
2009-07-02 8:39 ` Jan Kratochvil
2009-07-02 10:09 ` Vladimir Prus
2009-07-04 21:11 ` Jan Kratochvil [this message]
2009-07-07 8:54 ` Vladimir Prus
2009-07-07 9:32 ` Jan Kratochvil
2009-07-10 20:17 ` [patch 0/4] varobj_list replacement [Re: [patch 4/8] Types GC [varobj_list to all_root_varobjs]] Jan Kratochvil
2009-07-29 21:34 ` Tom Tromey
2009-07-30 8:46 ` Vladimir Prus
2009-07-30 14:00 ` Jan Kratochvil
2009-07-30 15:13 ` Vladimir Prus
2009-07-30 15:16 ` Jan Kratochvil
2009-07-10 20:18 ` [patch 1/4] varobj_list replacement, choice 1 of 3: VEC_safe_push + VEC_unordered_remove Jan Kratochvil
2009-07-10 20:21 ` [patch 2/4] varobj_list replacement, choice 2 of 3: VEC_safe_insert + VEC_ordered_remove Jan Kratochvil
2009-07-10 21:11 ` [patch 3/4] varobj_list replacement, choice 3 of 3: Iterator Jan Kratochvil
2009-07-10 22:12 ` [patch 4/4] varobj_list replacement, choice 3 of 3: Iterator optimization Jan Kratochvil
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=20090704210912.GA1600@host0.dyn.jankratochvil.net \
--to=jan.kratochvil@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=tromey@redhat.com \
--cc=vladimir@codesourcery.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