GDBserver
Classes | Macros | Typedefs | Enumerations | Functions | Variables
remote-utils.c File Reference
#include "server.h"
#include "terminal.h"
#include "target.h"
#include "gdbthread.h"
#include "tdesc.h"
#include "dll.h"
#include "rsp-low.h"
#include <ctype.h>
#include <sys/time.h>
#include <unistd.h>
#include <sys/stat.h>

Go to the source code of this file.

Classes

struct  sym_cache
 

Macros

#define INVALID_DESCRIPTOR   -1
 

Typedefs

typedef int socklen_t
 

Enumerations

enum  { NOT_SCHEDULED = -1 }
 

Functions

static int readchar (void)
 
static void reset_readchar (void)
 
static void reschedule (void)
 
int gdb_connected (void)
 
int remote_connection_is_stdio (void)
 
static void enable_async_notification (int fd)
 
static int handle_accept_event (int err, gdb_client_data client_data)
 
void remote_prepare (char *name)
 
void remote_open (char *name)
 
void remote_close (void)
 
void decode_address (CORE_ADDR *addrp, const char *start, int len)
 
const char * decode_address_to_semicolon (CORE_ADDR *addrp, const char *start)
 
static int try_rle (char *buf, int remaining, unsigned char *csum, char **p)
 
char * write_ptid (char *buf, ptid_t ptid)
 
ULONGEST hex_or_minus_one (char *buf, char **obuf)
 
ptid_t read_ptid (char *buf, char **obuf)
 
static int write_prim (const void *buf, int count)
 
static int read_prim (void *buf, int count)
 
static int putpkt_binary_1 (char *buf, int cnt, int is_notif)
 
int putpkt_binary (char *buf, int cnt)
 
int putpkt (char *buf)
 
int putpkt_notif (char *buf)
 
static void input_interrupt (int unused)
 
void check_remote_input_interrupt_request (void)
 
static void unblock_async_io (void)
 
void enable_async_io (void)
 
void disable_async_io (void)
 
void initialize_async_io (void)
 
static int process_remaining (void *context)
 
int getpkt (char *buf)
 
void write_ok (char *buf)
 
void write_enn (char *buf)
 
static char * outreg (struct regcache *regcache, int regno, char *buf)
 
void new_thread_notify (int id)
 
void dead_thread_notify (int id)
 
void prepare_resume_reply (char *buf, ptid_t ptid, struct target_waitstatus *status)
 
void decode_m_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr)
 
void decode_M_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr, unsigned char **to_p)
 
int decode_X_packet (char *from, int packet_len, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr, unsigned char **to_p)
 
int decode_xfer_write (char *buf, int packet_len, CORE_ADDR *offset, unsigned int *len, unsigned char *data)
 
int decode_search_memory_packet (const char *buf, int packet_len, CORE_ADDR *start_addrp, CORE_ADDR *search_space_lenp, gdb_byte *pattern, unsigned int *pattern_lenp)
 
static void free_sym_cache (struct sym_cache *sym)
 
void clear_symbol_cache (struct sym_cache **symcache_p)
 
int look_up_one_symbol (const char *name, CORE_ADDR *addrp, int may_ask_gdb)
 
int relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc)
 
void monitor_output (const char *msg)
 

Variables

static int readchar_callback = NOT_SCHEDULED
 
int remote_debug = 0
 
struct ui_file * gdb_stdlog
 
static int remote_is_stdio = 0
 
static gdb_fildes_t remote_desc = INVALID_DESCRIPTOR
 
static gdb_fildes_t listen_desc = INVALID_DESCRIPTOR
 
int using_threads
 
int debug_threads
 
int noack_mode = 0
 
int transport_is_reliable = 0
 
static int async_io_enabled
 
static unsigned char readchar_buf [BUFSIZ]
 
static int readchar_bufcnt = 0
 
static unsigned char * readchar_bufp
 

Macro Definition Documentation

#define INVALID_DESCRIPTOR   -1

Typedef Documentation

typedef int socklen_t

Definition at line 70 of file remote-utils.c.

Enumeration Type Documentation

anonymous enum
Enumerator
NOT_SCHEDULED 

Definition at line 82 of file remote-utils.c.

Function Documentation

void check_remote_input_interrupt_request ( void  )

Definition at line 766 of file remote-utils.c.

References input_interrupt(), INVALID_DESCRIPTOR, and remote_desc.

Referenced by get_child_debug_event().

void clear_symbol_cache ( struct sym_cache **  symcache_p)

Definition at line 1398 of file remote-utils.c.

References free_sym_cache(), and sym_cache::next.

Referenced by remove_process().

void dead_thread_notify ( int  id)

Definition at line 1092 of file remote-utils.c.

References disable_async_io(), enable_async_io(), own_buf, and putpkt().

void decode_address ( CORE_ADDR addrp,
const char *  start,
int  len 
)

Definition at line 421 of file remote-utils.c.

References fromhex().

Referenced by decode_address_to_semicolon(), handle_query(), and look_up_one_symbol().

const char* decode_address_to_semicolon ( CORE_ADDR addrp,
const char *  start 
)
void decode_m_packet ( char *  from,
CORE_ADDR mem_addr_ptr,
unsigned int *  len_ptr 
)
void decode_M_packet ( char *  from,
CORE_ADDR mem_addr_ptr,
unsigned int *  len_ptr,
unsigned char **  to_p 
)

Definition at line 1290 of file remote-utils.c.

References fromhex(), hex2bin(), and xmalloc().

Referenced by process_serial_event(), and relocate_instruction().

int decode_search_memory_packet ( const char *  buf,
int  packet_len,
CORE_ADDR start_addrp,
CORE_ADDR search_space_lenp,
gdb_byte pattern,
unsigned int *  pattern_lenp 
)

Definition at line 1372 of file remote-utils.c.

References decode_address_to_semicolon(), and remote_unescape_input().

Referenced by handle_search_memory().

int decode_X_packet ( char *  from,
int  packet_len,
CORE_ADDR mem_addr_ptr,
unsigned int *  len_ptr,
unsigned char **  to_p 
)

Definition at line 1316 of file remote-utils.c.

References fromhex(), remote_unescape_input(), and xmalloc().

Referenced by process_serial_event(), and relocate_instruction().

int decode_xfer_write ( char *  buf,
int  packet_len,
CORE_ADDR offset,
unsigned int *  len,
unsigned char *  data 
)

Definition at line 1348 of file remote-utils.c.

References fromhex(), and remote_unescape_input().

Referenced by handle_qxfer().

void disable_async_io ( void  )
void enable_async_io ( void  )

Definition at line 820 of file remote-utils.c.

References input_interrupt().

Referenced by dead_thread_notify(), new_thread_notify(), and resume().

static void enable_async_notification ( int  fd)
static

Definition at line 140 of file remote-utils.c.

Referenced by handle_accept_event(), and remote_open().

static void free_sym_cache ( struct sym_cache sym)
static

Definition at line 1388 of file remote-utils.c.

References sym_cache::name.

Referenced by clear_symbol_cache().

int gdb_connected ( void  )

Definition at line 126 of file remote-utils.c.

References INVALID_DESCRIPTOR, and remote_desc.

Referenced by handle_target_event(), and stop_tracing().

int getpkt ( char *  buf)
static int handle_accept_event ( int  err,
gdb_client_data  client_data 
)
static
ULONGEST hex_or_minus_one ( char *  buf,
char **  obuf 
)

Definition at line 530 of file remote-utils.c.

References startswith(), and unpack_varlen_hex().

Referenced by read_ptid().

void initialize_async_io ( void  )

Definition at line 852 of file remote-utils.c.

References disable_async_io(), and unblock_async_io().

Referenced by captured_main().

static void input_interrupt ( int  unused)
static
int look_up_one_symbol ( const char *  name,
CORE_ADDR addrp,
int  may_ask_gdb 
)
void monitor_output ( const char *  msg)
void new_thread_notify ( int  id)

Definition at line 1074 of file remote-utils.c.

References disable_async_io(), enable_async_io(), own_buf, putpkt(), and server_waiting.

static char* outreg ( struct regcache regcache,
int  regno,
char *  buf 
)
static

Definition at line 1057 of file remote-utils.c.

References collect_register_as_string(), register_size(), regcache::tdesc, and tohex().

Referenced by prepare_resume_reply().

void prepare_resume_reply ( char *  buf,
ptid_t  ptid,
struct target_waitstatus *  status 
)
static int process_remaining ( void *  context)
static

Definition at line 916 of file remote-utils.c.

References handle_serial_event(), NOT_SCHEDULED, and readchar_callback.

Referenced by reschedule().

int putpkt ( char *  buf)
int putpkt_binary ( char *  buf,
int  cnt 
)

Definition at line 700 of file remote-utils.c.

References putpkt_binary_1().

Referenced by process_serial_event(), and putpkt().

static int putpkt_binary_1 ( char *  buf,
int  cnt,
int  is_notif 
)
static
int putpkt_notif ( char *  buf)

Definition at line 716 of file remote-utils.c.

References putpkt_binary_1().

Referenced by notif_push().

static int read_prim ( void *  buf,
int  count 
)
static

Definition at line 603 of file remote-utils.c.

References remote_connection_is_stdio(), and remote_desc.

Referenced by input_interrupt(), and readchar().

ptid_t read_ptid ( char *  buf,
char **  obuf 
)
static int readchar ( void  )
static

Definition at line 873 of file remote-utils.c.

References perror(), read_prim(), readchar_buf, and reschedule().

Referenced by getpkt(), and putpkt_binary_1().

int relocate_instruction ( CORE_ADDR to,
CORE_ADDR  oldloc 
)
void remote_close ( void  )
int remote_connection_is_stdio ( void  )
void remote_open ( char *  name)
void remote_prepare ( char *  name)
static void reschedule ( void  )
static

Definition at line 935 of file remote-utils.c.

References append_callback_event(), NOT_SCHEDULED, process_remaining(), and readchar_callback.

Referenced by readchar().

static void reset_readchar ( void  )
static

Definition at line 903 of file remote-utils.c.

References delete_callback_event(), NOT_SCHEDULED, and readchar_callback.

Referenced by remote_close().

static int try_rle ( char *  buf,
int  remaining,
unsigned char *  csum,
char **  p 
)
static

Definition at line 462 of file remote-utils.c.

Referenced by putpkt_binary_1().

static void unblock_async_io ( void  )
static

Definition at line 782 of file remote-utils.c.

Referenced by initialize_async_io().

void write_enn ( char *  buf)
void write_ok ( char *  buf)
static int write_prim ( const void *  buf,
int  count 
)
static

Definition at line 590 of file remote-utils.c.

References remote_connection_is_stdio(), and remote_desc.

Referenced by getpkt(), and putpkt_binary_1().

char* write_ptid ( char *  buf,
ptid_t  ptid 
)

Variable Documentation

int async_io_enabled
static

Definition at line 816 of file remote-utils.c.

int debug_threads

Definition at line 24 of file debug.c.

Referenced by handle_accept_event(), and prepare_resume_reply().

struct ui_file* gdb_stdlog

Definition at line 104 of file remote-utils.c.

gdb_fildes_t listen_desc = INVALID_DESCRIPTOR
static

Definition at line 109 of file remote-utils.c.

Referenced by handle_accept_event(), remote_open(), and remote_prepare().

int noack_mode = 0

Definition at line 116 of file remote-utils.c.

Referenced by captured_main(), getpkt(), handle_general_set(), and putpkt_binary_1().

unsigned char readchar_buf[BUFSIZ]
static

Definition at line 866 of file remote-utils.c.

Referenced by readchar().

int readchar_bufcnt = 0
static

Definition at line 867 of file remote-utils.c.

unsigned char* readchar_bufp
static

Definition at line 868 of file remote-utils.c.

int readchar_callback = NOT_SCHEDULED
static

Definition at line 89 of file remote-utils.c.

Referenced by process_remaining(), reschedule(), and reset_readchar().

int remote_debug = 0

Definition at line 103 of file remote-utils.c.

Referenced by getpkt(), handle_notif_ack(), notif_event_enque(), and putpkt_binary_1().

gdb_fildes_t remote_desc = INVALID_DESCRIPTOR
static
int remote_is_stdio = 0
static

Definition at line 106 of file remote-utils.c.

Referenced by remote_connection_is_stdio(), and remote_prepare().

int transport_is_reliable = 0

Definition at line 118 of file remote-utils.c.

Referenced by handle_query(), and remote_prepare().

int using_threads

Definition at line 250 of file linux-low.c.

Referenced by prepare_resume_reply().