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  <tom@tromey.com>

	* gdbthread.h (struct thread_control_state): Add initializer.
	(class thread_info) <control>: Remove initializer.
	* inferior.h (struct inferior_control_state): Add initializer.
	(class inferior) <control>: 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.
This commit is contained in:
Tom Tromey
2018-06-14 15:59:55 -07:00
parent 117f580a97
commit ee841dd8fe
5 changed files with 47 additions and 26 deletions

View File

@@ -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'. */