This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
> 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:
infrun.c.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |