From: Joel Brobecker <brobecker@gnat.com>
To: Mark Kettenis <kettenis@chello.nl>
Cc: ac131313@redhat.com, gdb-patches@sources.redhat.com
Subject: [RFA] infrun.c:handle_inferior_event() tiny simplification (was "Re: [RFA/patch] handle_inferior_event() extract some code into a separate function")
Date: Sat, 03 Jan 2004 15:01:00 -0000 [thread overview]
Message-ID: <20040103150107.GY820@gnat.com> (raw)
In-Reply-To: <200401031251.i03CpAwn025849@elgar.kettenis.dyndns.org>
[-- Attachment #1: Type: text/plain, Size: 2134 bytes --]
> gcc -c -g -O2 ... -Werror /home/kettenis/sandbox/virgin-gdb/src/gdb/infrun.c
> cc1: warnings being treated as errors
> /home/kettenis/sandbox/virgin-gdb/src/gdb/infrun.c: In function `handle_inferior_event':
> /home/kettenis/sandbox/virgin-gdb/src/gdb/infrun.c:1337: warning: `real_stop_pc' might be used uninitialized in this function
Thanks to Mark, I looked closer to this variable. It turns out that
this variable is very locally used in two blocks of the function,
vis:
void
handle_inferior_event (struct execution_control_state *ecs)
{
[...]
if ([test for subroutine call])\
{
[...]
real_stop_pc = skip_language_trampoline (stop_pc);
if (real_stop_pc == 0)
real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
if (real_stop_pc != 0)
ecs->stop_func_start = real_stop_pc;
[...]
return;
}
[...]
if (IN_SOLIB_RETURN_TRAMPOLINE (stop_pc, ecs->stop_func_name))
{
/* Determine where this trampoline returns. */
real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
/* Only proceed through if we know where it's going. */
if (real_stop_pc)
{
[...]
sr_sal.pc = real_stop_pc;
[...]
return;
}
}
[...]
}
So the real mistake I made was to make real_stop_pc a parameter
of the new function I introduced. It should have been a local
variable to that function.
Here is what I suggest:
1. A patch to makes it more obvious that this variable is only
locally used by defining it only inside these if blocks.
Patch attached.
2. Send an updated version of the patch I backed out where
real_stop_pc is local variable to the new function, rather
than a parameter (that was completely foolish since we don't
even use the value that was passed and was not set in any case)
Here is the first patch:
2004-01-03 J. Brobecker <brobecker@gnat.com>
* infrun.c (handle_inferior_event): Move the declaration of
real_stop_pc inside the if blocks where it is used.
OK to apply? Tested on x86-linux with GCC 3.2.3, no warning, and
no regression.
--
Joel
[-- Attachment #2: infrun.c.diff --]
[-- Type: text/plain, Size: 1237 bytes --]
Index: infrun.c
===================================================================
RCS file: /cvs/src/src/gdb/infrun.c,v
retrieving revision 1.124
diff -u -p -r1.124 infrun.c
--- infrun.c 3 Jan 2004 13:02:00 -0000 1.124
+++ infrun.c 3 Jan 2004 14:47:01 -0000
@@ -1244,7 +1244,6 @@ pc_in_sigtramp (CORE_ADDR pc)
void
handle_inferior_event (struct execution_control_state *ecs)
{
- CORE_ADDR real_stop_pc;
/* NOTE: cagney/2003-03-28: If you're looking at this code and
thinking that the variable stepped_after_stopped_by_watchpoint
isn't used, then you're wrong! The macro STOPPED_BY_WATCHPOINT,
@@ -2479,6 +2478,7 @@ process_event_stop_test:
|| ecs->stop_func_name == 0)
{
/* It's a subroutine call. */
+ CORE_ADDR real_stop_pc;
if ((step_over_calls == STEP_OVER_NONE)
|| ((step_range_end == 1)
@@ -2582,7 +2582,7 @@ process_event_stop_test:
if (IN_SOLIB_RETURN_TRAMPOLINE (stop_pc, ecs->stop_func_name))
{
/* Determine where this trampoline returns. */
- real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
+ CORE_ADDR real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
/* Only proceed through if we know where it's going. */
if (real_stop_pc)
next prev parent reply other threads:[~2004-01-03 15:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-12-19 14:43 [RFA/patch] handle_inferior_event() extract some code into a separate function Joel Brobecker
2004-01-02 16:29 ` Andrew Cagney
2004-01-03 11:52 ` Joel Brobecker
2004-01-03 12:51 ` Mark Kettenis
2004-01-03 13:00 ` Joel Brobecker
2004-01-03 15:01 ` Joel Brobecker [this message]
2004-01-03 15:09 ` [RFA] infrun.c:handle_inferior_event() tiny simplification (was "Re: [RFA/patch] handle_inferior_event() extract some code into a separate function") Mark Kettenis
2004-01-03 15:18 ` Joel Brobecker
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=20040103150107.GY820@gnat.com \
--to=brobecker@gnat.com \
--cc=ac131313@redhat.com \
--cc=gdb-patches@sources.redhat.com \
--cc=kettenis@chello.nl \
/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