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:
parent
117f580a97
commit
ee841dd8fe
5 changed files with 47 additions and 26 deletions
|
@ -1,3 +1,15 @@
|
|||
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.
|
||||
|
||||
2018-09-17 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* infrun.c (struct infcall_suspend_state) <registers>: Now a
|
||||
|
|
|
@ -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'. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
13
gdb/infrun.c
13
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. */
|
||||
|
|
Loading…
Add table
Reference in a new issue