forked from Imagelibrary/binutils-gdb
Add client_state struct.
Collect per client specific global data items into struct client_state, which is similar in purpose to remote.c::remote_state. gdbserver/ChangeLog * server.h (struct client_state): New. * server.c (cont_thread, general_thread, multi_process) (report_fork_events, report_vfork_events, report_exec_events) (report_thread_events, swbreak_feature, hwbreak_feature) (vCont_supported, disable_randomization, pass_signals) (program_signals, program_signals_p, last_status, last_ptid, own_buf): Moved to client_state. * remote-utils.c (remote_debug, noack_mode) (transport_is_reliable): Moved to client_state. * tracepoint.c (current_traceframe): Moved to client_state. Update all callers. * server.c, remote-utils.c, tracepoint.c, fork-child.c, linux-low.c, remote-utils.h, target.c: Use client_state.
This commit is contained in:
@@ -60,8 +60,6 @@ int vsnprintf(char *str, size_t size, const char *format, va_list ap);
|
||||
#include "gdb_signals.h"
|
||||
#include "target.h"
|
||||
#include "mem-break.h"
|
||||
#include "gdbthread.h"
|
||||
#include "inferiors.h"
|
||||
#include "environ.h"
|
||||
|
||||
/* Target-specific functions */
|
||||
@@ -70,42 +68,16 @@ void initialize_low ();
|
||||
|
||||
/* Public variables in server.c */
|
||||
|
||||
extern ptid_t cont_thread;
|
||||
extern ptid_t general_thread;
|
||||
|
||||
extern int server_waiting;
|
||||
extern int pass_signals[];
|
||||
extern int program_signals[];
|
||||
extern int program_signals_p;
|
||||
|
||||
extern int disable_packet_vCont;
|
||||
extern int disable_packet_Tthread;
|
||||
extern int disable_packet_qC;
|
||||
extern int disable_packet_qfThreadInfo;
|
||||
|
||||
extern char *own_buf;
|
||||
|
||||
extern int run_once;
|
||||
extern int multi_process;
|
||||
extern int report_fork_events;
|
||||
extern int report_vfork_events;
|
||||
extern int report_exec_events;
|
||||
extern int report_thread_events;
|
||||
extern int non_stop;
|
||||
|
||||
/* True if the "swbreak+" feature is active. In that case, GDB wants
|
||||
us to report whether a trap is explained by a software breakpoint
|
||||
and for the server to handle PC adjustment if necessary on this
|
||||
target. Only enabled if the target supports it. */
|
||||
extern int swbreak_feature;
|
||||
|
||||
/* True if the "hwbreak+" feature is active. In that case, GDB wants
|
||||
us to report whether a trap is explained by a hardware breakpoint.
|
||||
Only enabled if the target supports it. */
|
||||
extern int hwbreak_feature;
|
||||
|
||||
extern int disable_randomization;
|
||||
|
||||
#if USE_WIN32API
|
||||
#include <winsock2.h>
|
||||
typedef SOCKET gdb_fildes_t;
|
||||
@@ -158,8 +130,79 @@ extern void post_fork_inferior (int pid, const char *program);
|
||||
/* Get the gdb_environ being used in the current session. */
|
||||
extern gdb_environ *get_environ ();
|
||||
|
||||
extern target_waitstatus last_status;
|
||||
extern ptid_t last_ptid;
|
||||
extern unsigned long signal_pid;
|
||||
|
||||
|
||||
/* Description of the client remote protocol state for the currently
|
||||
connected client. */
|
||||
|
||||
struct client_state
|
||||
{
|
||||
client_state ():
|
||||
own_buf ((char *) xmalloc (PBUFSIZ + 1))
|
||||
{}
|
||||
|
||||
/* The thread set with an `Hc' packet. `Hc' is deprecated in favor of
|
||||
`vCont'. Note the multi-process extensions made `vCont' a
|
||||
requirement, so `Hc pPID.TID' is pretty much undefined. So
|
||||
CONT_THREAD can be null_ptid for no `Hc' thread, minus_one_ptid for
|
||||
resuming all threads of the process (again, `Hc' isn't used for
|
||||
multi-process), or a specific thread ptid_t. */
|
||||
ptid_t cont_thread;
|
||||
|
||||
/* The thread set with an `Hg' packet. */
|
||||
ptid_t general_thread;
|
||||
|
||||
int multi_process = 0;
|
||||
int report_fork_events = 0;
|
||||
int report_vfork_events = 0;
|
||||
int report_exec_events = 0;
|
||||
int report_thread_events = 0;
|
||||
|
||||
/* True if the "swbreak+" feature is active. In that case, GDB wants
|
||||
us to report whether a trap is explained by a software breakpoint
|
||||
and for the server to handle PC adjustment if necessary on this
|
||||
target. Only enabled if the target supports it. */
|
||||
int swbreak_feature = 0;
|
||||
/* True if the "hwbreak+" feature is active. In that case, GDB wants
|
||||
us to report whether a trap is explained by a hardware breakpoint.
|
||||
Only enabled if the target supports it. */
|
||||
int hwbreak_feature = 0;
|
||||
|
||||
/* True if the "vContSupported" feature is active. In that case, GDB
|
||||
wants us to report whether single step is supported in the reply to
|
||||
"vCont?" packet. */
|
||||
int vCont_supported = 0;
|
||||
|
||||
/* Whether we should attempt to disable the operating system's address
|
||||
space randomization feature before starting an inferior. */
|
||||
int disable_randomization = 0;
|
||||
|
||||
int pass_signals[GDB_SIGNAL_LAST];
|
||||
int program_signals[GDB_SIGNAL_LAST];
|
||||
int program_signals_p = 0;
|
||||
|
||||
/* Last status reported to GDB. */
|
||||
struct target_waitstatus last_status;
|
||||
ptid_t last_ptid;
|
||||
|
||||
char *own_buf;
|
||||
|
||||
/* If true, then GDB has requested noack mode. */
|
||||
int noack_mode = 0;
|
||||
/* If true, then we tell GDB to use noack mode by default. */
|
||||
int transport_is_reliable = 0;
|
||||
|
||||
/* The traceframe to be used as the source of data to send back to
|
||||
GDB. A value of -1 means to get data from the live program. */
|
||||
|
||||
int current_traceframe = -1;
|
||||
|
||||
};
|
||||
|
||||
client_state &get_client_state ();
|
||||
|
||||
#include "gdbthread.h"
|
||||
#include "inferiors.h"
|
||||
|
||||
#endif /* SERVER_H */
|
||||
|
||||
Reference in New Issue
Block a user