This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: MI: Another -var-update bug? [PATCH]
- From: Nick Roberts <nickrob at snap dot net dot nz>
- To: Vladimir Prus <ghost at cs dot msu dot su>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Fri, 5 Jan 2007 12:59:29 +1300
- Subject: Re: MI: Another -var-update bug? [PATCH]
- References: <17790.36044.454650.114329@kahikatea.snap.net.nz> <17791.40309.90872.126841@kahikatea.snap.net.nz> <E1H2Xe8-0007Mc-Ae@zigzag.lvk.cs.msu.su>
> This patch introduces this for me:
>
> FAIL: gdb.mi/mi-var-cp.exp: update RX (3)
>
> Do you get this failure to? If yes, can you please fix it?
> If no, let me know and I'll investigate.
I don't get this failure.
> > /* FIXME: select_frame could fail */
> > ! ? ? ? if (fi)
> > ! ??????{
> > ! ?????? ?CORE_ADDR pc = get_frame_pc (fi);
> > ! ?????? ?if (pc < ?BLOCK_START (var->root->valid_block) ||
> > ! ?????? ? ? ?pc >= BLOCK_END (var->root->valid_block))
> > ! ?????? ? ?within_scope = 0;
> > ! ?????? ?select_frame (fi);
> > ! ??????}
>
> The code later in this function is only executed if "within_scope" is
> true. Would it be better to call select_frame only if within_scope is
> set to true, like this:
>
> if (pc < BLOCK_START (var->root->valid_block) ||
> pc >= BLOCK_END (var->root->valid_block))
> within_scope = 0;
> else
> select_frame (fi);
Yes, it looks like the call to select_frame is not needed when the variable is
out of scope. Daniel also suggested removing the call to reinit_frame_cache.
--
Nick http://www.inet.net.nz/~nickrob