From ee841dd8fee73c355587533027aecc8983bd5478 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 14 Jun 2018 15:59:55 -0700 Subject: [PATCH] Use new and delete for struct infcall_control_state This changes infrun.c to use new and delete for infcall_control_state. gdb/ChangeLog 2018-09-17 Tom Tromey * gdbthread.h (struct thread_control_state): Add initializer. (class thread_info) : Remove initializer. * inferior.h (struct inferior_control_state): Add initializer. (class inferior) : Remove initializer. (exit_inferior_1): Update. * infrun.c (struct infcall_control_state): Add constructors. (save_infcall_control_state): Use new. (restore_infcall_control_state, discard_infcall_control_state): Use delete. --- gdb/ChangeLog | 12 ++++++++++++ gdb/gdbthread.h | 34 +++++++++++++++++----------------- gdb/inferior.c | 2 +- gdb/inferior.h | 12 +++++++++++- gdb/infrun.c | 13 ++++++------- 5 files changed, 47 insertions(+), 26 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d5441c812b0..681ed3a232f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,15 @@ +2018-09-17 Tom Tromey + + * gdbthread.h (struct thread_control_state): Add initializer. + (class thread_info) : Remove initializer. + * inferior.h (struct inferior_control_state): Add initializer. + (class inferior) : Remove initializer. + (exit_inferior_1): Update. + * infrun.c (struct infcall_control_state): Add constructors. + (save_infcall_control_state): Use new. + (restore_infcall_control_state, discard_infcall_control_state): + Use delete. + 2018-09-17 Tom Tromey * infrun.c (struct infcall_suspend_state) : Now a diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h index 99de5ff0d80..2738e44da9f 100644 --- a/gdb/gdbthread.h +++ b/gdb/gdbthread.h @@ -52,17 +52,17 @@ struct thread_control_state /* User/external stepping state. */ /* Step-resume or longjmp-resume breakpoint. */ - struct breakpoint *step_resume_breakpoint; + struct breakpoint *step_resume_breakpoint = nullptr; /* Exception-resume breakpoint. */ - struct breakpoint *exception_resume_breakpoint; + struct breakpoint *exception_resume_breakpoint = nullptr; /* Breakpoints used for software single stepping. Plural, because it may have multiple locations. E.g., if stepping over a conditional branch instruction we can't decode the condition for, we'll need to put a breakpoint at the branch destination, and another at the instruction after the branch. */ - struct breakpoint *single_step_breakpoints; + struct breakpoint *single_step_breakpoints = nullptr; /* Range to single step within. @@ -74,11 +74,11 @@ struct thread_control_state wait_for_inferior in a minor way if this were changed to the address of the instruction and that address plus one. But maybe not). */ - CORE_ADDR step_range_start; /* Inclusive */ - CORE_ADDR step_range_end; /* Exclusive */ + CORE_ADDR step_range_start = 0; /* Inclusive */ + CORE_ADDR step_range_end = 0; /* Exclusive */ /* Function the thread was in as of last it started stepping. */ - struct symbol *step_start_function; + struct symbol *step_start_function = nullptr; /* If GDB issues a target step request, and this is nonzero, the target should single-step this thread once, and then continue @@ -86,16 +86,16 @@ struct thread_control_state thread stops in the step range above. If this is zero, the target should ignore the step range, and only issue one single step. */ - int may_range_step; + int may_range_step = 0; /* Stack frame address as of when stepping command was issued. This is how we know when we step into a subroutine call, and how to set the frame for the breakpoint used to step out. */ - struct frame_id step_frame_id; + struct frame_id step_frame_id {}; /* Similarly, the frame ID of the underlying stack frame (skipping any inlined frames). */ - struct frame_id step_stack_frame_id; + struct frame_id step_stack_frame_id {}; /* Nonzero if we are presently stepping over a breakpoint. @@ -119,29 +119,29 @@ struct thread_control_state wait_for_inferior, which calls handle_inferior_event in a loop, and until wait_for_inferior exits, this variable is changed only by keep_going. */ - int trap_expected; + int trap_expected = 0; /* Nonzero if the thread is being proceeded for a "finish" command or a similar situation when return value should be printed. */ - int proceed_to_finish; + int proceed_to_finish = 0; /* Nonzero if the thread is being proceeded for an inferior function call. */ - int in_infcall; + int in_infcall = 0; - enum step_over_calls_kind step_over_calls; + enum step_over_calls_kind step_over_calls = STEP_OVER_NONE; /* Nonzero if stopped due to a step command. */ - int stop_step; + int stop_step = 0; /* Chain containing status of breakpoint(s) the thread stopped at. */ - bpstat stop_bpstat; + bpstat stop_bpstat = nullptr; /* Whether the command that started the thread was a stepping command. This is used to decide whether "set scheduler-locking step" behaves like "on" or "off". */ - int stepping_command; + int stepping_command = 0; }; /* Inferior thread specific part of `struct infcall_suspend_state'. */ @@ -296,7 +296,7 @@ public: /* State of GDB control of inferior thread execution. See `struct thread_control_state'. */ - thread_control_state control {}; + thread_control_state control; /* State of inferior thread to restore after GDB is done with an inferior call. See `struct thread_suspend_state'. */ diff --git a/gdb/inferior.c b/gdb/inferior.c index 76f5581b7db..17d28c4cf54 100644 --- a/gdb/inferior.c +++ b/gdb/inferior.c @@ -226,7 +226,7 @@ exit_inferior_1 (struct inferior *inftoex, int silent) inf->pending_detach = 0; /* Reset it. */ - inf->control = {NO_STOP_QUIETLY}; + inf->control = inferior_control_state (NO_STOP_QUIETLY); } void diff --git a/gdb/inferior.h b/gdb/inferior.h index 8d384298387..9f431de7bf4 100644 --- a/gdb/inferior.h +++ b/gdb/inferior.h @@ -283,6 +283,16 @@ struct private_inferior struct inferior_control_state { + inferior_control_state () + : stop_soon (NO_STOP_QUIETLY) + { + } + + explicit inferior_control_state (enum stop_kind when) + : stop_soon (when) + { + } + /* See the definition of stop_kind above. */ enum stop_kind stop_soon; }; @@ -341,7 +351,7 @@ public: /* State of GDB control of inferior process execution. See `struct inferior_control_state'. */ - inferior_control_state control {NO_STOP_QUIETLY}; + inferior_control_state control; /* True if this was an auto-created inferior, e.g. created from following a fork; false, if this inferior was manually added by diff --git a/gdb/infrun.c b/gdb/infrun.c index d350ad121fd..0df539af169 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -8928,11 +8928,11 @@ struct infcall_control_state struct inferior_control_state inferior_control; /* Other fields: */ - enum stop_stack_kind stop_stack_dummy; - int stopped_by_random_signal; + enum stop_stack_kind stop_stack_dummy = STOP_NONE; + int stopped_by_random_signal = 0; /* ID if the selected frame when the inferior function call was made. */ - struct frame_id selected_frame_id; + struct frame_id selected_frame_id {}; }; /* Save all of the information associated with the inferior<==>gdb @@ -8941,8 +8941,7 @@ struct infcall_control_state struct infcall_control_state * save_infcall_control_state (void) { - struct infcall_control_state *inf_status = - XNEW (struct infcall_control_state); + struct infcall_control_state *inf_status = new struct infcall_control_state; struct thread_info *tp = inferior_thread (); struct inferior *inf = current_inferior (); @@ -9028,7 +9027,7 @@ restore_infcall_control_state (struct infcall_control_state *inf_status) END_CATCH } - xfree (inf_status); + delete inf_status; } static void @@ -9058,7 +9057,7 @@ discard_infcall_control_state (struct infcall_control_state *inf_status) /* See save_infcall_control_state for info on stop_bpstat. */ bpstat_clear (&inf_status->thread_control.stop_bpstat); - xfree (inf_status); + delete inf_status; } /* See infrun.h. */ -- 2.30.2