GDBserver

Classes | Macros | Typedefs | Enumerations | Functions | Variables
remote-utils.c File Reference
`#include "server.h"`
`#include "target.h"`
`#include "gdbthread.h"`
`#include "tdesc.h"`
`#include "dll.h"`
`#include "rsp-low.h"`
`#include <ctype.h>`
`#include "gdb_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 (const char *name)
void | remote_open (const 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)
static ULONGEST | hex_or_minus_one (const char *buf, const char **obuf)
ptid_t | read_ptid (const char *buf, const 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 | block_unblock_async_io (int block)
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 | 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

## ◆ INVALID_DESCRIPTOR

#define INVALID_DESCRIPTOR -1

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

Referenced by check_remote_input_interrupt_request(), gdb_connected(), and remote_close().

## Typedef Documentation

## ◆ socklen_t

typedef int socklen_t

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

## Enumeration Type Documentation

## ◆ anonymous enum

anonymous enum

Enumerator
NOT_SCHEDULED |

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

## Function Documentation

## ◆ block_unblock_async_io()

static void block_unblock_async_io | ( | int | block | ) |
| static

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

Referenced by disable_async_io(), and enable_async_io().

## ◆ check_remote_input_interrupt_request()

void check_remote_input_interrupt_request | ( | void |  | ) |

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

References input_interrupt(), INVALID_DESCRIPTOR, and remote_desc.

Referenced by get_child_debug_event().

## ◆ clear_symbol_cache()

void clear_symbol_cache | ( | struct sym_cache ** | symcache_p | ) |

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

References free_sym_cache(), and sym_cache::next.

Referenced by remove_process().

## ◆ decode_address()

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

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

References fromhex().

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

## ◆ decode_address_to_semicolon()

const char* decode_address_to_semicolon | ( | CORE_ADDR * | addrp,
|  | const char * | start
| ) |  |

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

References decode_address().

Referenced by decode_search_memory_packet(), handle_general_set(), and linux_qxfer_libraries_svr4().

## ◆ decode_m_packet()

void decode_m_packet | ( | char * | from,
|  | CORE_ADDR * | mem_addr_ptr,
|  | unsigned int * | len_ptr
| ) |  |

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

References fromhex().

Referenced by decode_xfer_read(), look_up_one_symbol(), process_serial_event(), and relocate_instruction().

## ◆ decode_M_packet()

void decode_M_packet | ( | char * | from,
|  | CORE_ADDR * | mem_addr_ptr,
|  | unsigned int * | len_ptr,
|  | unsigned char ** | to_p
| ) |  |

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

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

Referenced by process_serial_event(), and relocate_instruction().

## ◆ decode_search_memory_packet()

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 1391 of file remote-utils.c.

References decode_address_to_semicolon(), and remote_unescape_input().

Referenced by handle_search_memory().

## ◆ decode_X_packet()

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 1335 of file remote-utils.c.

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

Referenced by process_serial_event(), and relocate_instruction().

## ◆ decode_xfer_write()

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

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

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

Referenced by handle_qxfer().

## ◆ disable_async_io()

void disable_async_io | ( | void |  | ) |

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

References async_io_enabled, and block_unblock_async_io().

Referenced by initialize_async_io(), process_serial_event(), remote_close(), and resume().

## ◆ enable_async_io()

void enable_async_io | ( | void |  | ) |

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

References async_io_enabled, and block_unblock_async_io().

Referenced by resume().

## ◆ enable_async_notification()

static void enable_async_notification | ( | int | fd | ) |
| static

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

References fcntl.

Referenced by handle_accept_event(), and remote_open().

## ◆ free_sym_cache()

static void free_sym_cache | ( | struct sym_cache * | sym | ) |
| static

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

References free(), and sym_cache::name.

Referenced by clear_symbol_cache().

## ◆ gdb_connected()

int gdb_connected | ( | void |  | ) |

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

References INVALID_DESCRIPTOR, and remote_desc.

Referenced by handle_target_event(), and stop_tracing().

## ◆ getpkt()

int getpkt | ( | char * | buf | ) |

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

References debug_flush(), debug_printf(), fromhex(), noack_mode, readchar(), readchar_bufcnt, readchar_bufp, remote_debug, target_ops::request_interrupt, the_target, and write_prim().

Referenced by look_up_one_symbol(), process_serial_event(), and relocate_instruction().

## ◆ handle_accept_event()

static int handle_accept_event | ( | int | err,
|  | gdb_client_data | client_data
| ) |  |
| static

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

References add_file_handler(), debug_printf(), debug_threads, delete_file_handler(), enable_async_notification(), handle_serial_event(), listen_desc, perror_with_name(), remote_desc, run_once, and target_async.

Referenced by remote_open().

## ◆ hex_or_minus_one()

static ULONGEST hex_or_minus_one | ( | const char * | buf,
|  | const char ** | obuf
| ) |  |
| static

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

References startswith(), and unpack_varlen_hex().

Referenced by read_ptid().

## ◆ initialize_async_io()

void initialize_async_io | ( | void |  | ) |

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

References async_io_enabled, disable_async_io(), and input_interrupt().

Referenced by captured_main().

## ◆ input_interrupt()

static void input_interrupt | ( | int | unused | ) |
| static

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

References read_prim(), remote_desc, target_ops::request_interrupt, and the_target.

Referenced by check_remote_input_interrupt_request(), and initialize_async_io().

## ◆ look_up_one_symbol()

int look_up_one_symbol | ( | const char * | name,
|  | CORE_ADDR * | addrp,
|  | int | may_ask_gdb
| ) |  |

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

References sym_cache::addr, bin2hex(), current_process(), decode_address(), decode_m_packet(), free(), getpkt(), handle_v_requests(), mem_buf, sym_cache::name, name, sym_cache::next, own_buf, putpkt(), putpkt_binary(), read_inferior_memory(), startswith(), process_info::symbol_cache, warning(), write_enn(), xmalloc(), XNEW, and xstrdup().

Referenced by find_minimal_symbol_address(), thread_db_look_up_one_symbol(), thread_db_look_up_symbols(), and tracepoint_look_up_symbols().

## ◆ monitor_output()

void monitor_output | ( | const char * | msg | ) |

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

References bin2hex(), free(), putpkt(), and xmalloc().

Referenced by handle_monitor_command(), handle_output_debug_string(), monitor_show_help(), parse_debug_format_options(), and thread_db_handle_monitor_command().

## ◆ outreg()

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

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

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

Referenced by prepare_resume_reply().

## ◆ prepare_resume_reply()

void prepare_resume_reply | ( | char * | buf,
|  | ptid_t | ptid,
|  | struct target_waitstatus * | status
| ) |  |

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

References bin2hex(), current_target_desc(), current_thread, debug_printf(), debug_threads, disable_packet_Tthread, dlls_changed, error(), target_desc::expedite_regs, find_regno(), general_thread, get_thread_regcache(), hwbreak_feature, multi_process, non_stop, outreg(), ptid_equal(), ptid_get_pid(), report_exec_events, report_fork_events, report_thread_events, report_vfork_events, target_ops::stopped_by_watchpoint, target_ops::stopped_data_address, swbreak_feature, switch_to_thread(), target_core_of_thread, target_pid_to_str(), target_stopped_by_hw_breakpoint, target_stopped_by_sw_breakpoint, regcache::tdesc, the_target, tohex(), using_threads, write_ptid(), and xfree().

Referenced by handle_pending_status(), handle_status(), handle_v_attach(), handle_v_run(), resume(), and vstop_notif_reply().

## ◆ process_remaining()

static int process_remaining | ( | void * | context | ) |
| static

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

References handle_serial_event(), NOT_SCHEDULED, readchar_bufcnt, and readchar_callback.

Referenced by reschedule().

## ◆ putpkt()

int putpkt | ( | char * | buf | ) |

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

References putpkt_binary().

Referenced by captured_main(), handle_detach(), look_up_one_symbol(), monitor_output(), process_serial_event(), and relocate_instruction().

## ◆ putpkt_binary()

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

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

References putpkt_binary_1().

Referenced by look_up_one_symbol(), process_serial_event(), and putpkt().

## ◆ putpkt_binary_1()

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

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

References current_thread, debug_flush(), debug_printf(), free(), noack_mode, perror(), readchar(), remote_debug, target_ops::request_interrupt, the_target, tohex(), try_rle(), write_prim(), and xmalloc().

Referenced by putpkt_binary(), and putpkt_notif().

## ◆ putpkt_notif()

int putpkt_notif | ( | char * | buf | ) |

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

References putpkt_binary_1().

Referenced by notif_push().

## ◆ read_prim()

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

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

References remote_connection_is_stdio(), and remote_desc.

Referenced by input_interrupt(), and readchar().

## ◆ read_ptid()

ptid_t read_ptid | ( | const char * | buf,
|  | const char ** | obuf
| ) |  |

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

References error(), get_first_process(), hex_or_minus_one(), pid_of(), ptid_build(), and unpack_varlen_hex().

Referenced by handle_query(), handle_v_cont(), and process_serial_event().

## ◆ readchar()

static int readchar | ( | void |  | ) |
| static

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

References debug_printf(), perror(), read_prim(), readchar_buf, readchar_bufcnt, readchar_bufp, remote_debug, and reschedule().

Referenced by getpkt(), and putpkt_binary_1().

## ◆ relocate_instruction()

int relocate_instruction | ( | CORE_ADDR * | to,
|  | CORE_ADDR | oldloc
| ) |  |

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

References bin2hex(), decode_m_packet(), decode_M_packet(), decode_X_packet(), free(), getpkt(), mem_buf, own_buf, paddress(), putpkt(), read_inferior_memory(), startswith(), unpack_varlen_hex(), warning(), write_enn(), write_inferior_memory(), write_ok(), and xmalloc().

Referenced by i386_install_fast_tracepoint_jump_pad().

## ◆ remote_close()

void remote_close | ( | void |  | ) |

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

References delete_file_handler(), disable_async_io(), INVALID_DESCRIPTOR, remote_connection_is_stdio(), remote_desc, and reset_readchar().

Referenced by handle_detach(), and process_serial_event().

## ◆ remote_connection_is_stdio()

int remote_connection_is_stdio | ( | void |  | ) |

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

References remote_is_stdio.

Referenced by linux_ptrace_fun(), mywait(), read_prim(), remote_close(), and write_prim().

## ◆ remote_open()

void remote_open | ( | const char * | name | ) |

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

References add_file_handler(), enable_async_notification(), errno, error(), handle_accept_event(), handle_serial_event(), listen_desc, name, perror_with_name(), remote_desc, S_ISCHR, S_ISFIFO, and STDIO_CONNECTION_NAME.

Referenced by captured_main().

## ◆ remote_prepare()

void remote_prepare | ( | const char * | name | ) |

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

References error(), listen_desc, name, perror_with_name(), remote_is_stdio, STDIO_CONNECTION_NAME, and transport_is_reliable.

Referenced by captured_main().

## ◆ reschedule()

static void reschedule | ( | void |  | ) |
| static

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

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

Referenced by readchar().

## ◆ reset_readchar()

static void reset_readchar | ( | void |  | ) |
| static

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

References delete_callback_event(), NOT_SCHEDULED, readchar_bufcnt, and readchar_callback.

Referenced by remote_close().

## ◆ try_rle()

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

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

Referenced by putpkt_binary_1().

## ◆ write_enn()

void write_enn | ( | char * | buf | ) |

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

Referenced by captured_main(), cmd_bigqtbuffer_size(), cmd_qtbuffer(), cmd_qtdp(), cmd_qtdpsrc(), cmd_qtenable_disable(), cmd_qtinit(), cmd_qtp(), cmd_qtstart(), handle_detach(), handle_fstat(), handle_general_set(), handle_monitor_command(), handle_query(), handle_qxfer(), handle_v_attach(), handle_v_cont(), handle_v_kill(), handle_v_requests(), handle_v_run(), install_tracepoint(), look_up_one_symbol(), process_serial_event(), and relocate_instruction().

## ◆ write_ok()

void write_ok | ( | char * | buf | ) |

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

Referenced by cmd_bigqtbuffer_circular(), cmd_bigqtbuffer_size(), cmd_qtdisconnected(), cmd_qtdp(), cmd_qtdpsrc(), cmd_qtdv(), cmd_qtenable_disable(), cmd_qtframe(), cmd_qtinit(), cmd_qtnotes(), cmd_qtro(), cmd_qtstart(), cmd_qtstop(), handle_btrace_conf_general_set(), handle_btrace_general_set(), handle_detach(), handle_general_set(), handle_query(), handle_v_attach(), handle_v_kill(), handle_v_requests(), install_tracepoint(), notif_write_event(), process_serial_event(), relocate_instruction(), and resume().

## ◆ write_prim()

static int write_prim | ( | const void * | buf,
|  | int | count
| ) |  |
| static

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

References remote_connection_is_stdio(), and remote_desc.

Referenced by getpkt(), and putpkt_binary_1().

## ◆ write_ptid()

char* write_ptid | ( | char * | buf,
|  | ptid_t | ptid
| ) |  |

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

References multi_process, ptid_get_lwp(), and ptid_get_pid().

Referenced by handle_query(), handle_qxfer_threads_worker(), and prepare_resume_reply().

## Variable Documentation

## ◆ async_io_enabled

int async_io_enabled
| static

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

Referenced by disable_async_io(), enable_async_io(), and initialize_async_io().

## ◆ debug_threads

int debug_threads

Definition at line 24 of file debug.c.

Referenced by handle_accept_event(), and prepare_resume_reply().

## ◆ gdb_stdlog

struct ui_file* gdb_stdlog

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

## ◆ listen_desc

gdb_fildes_t listen_desc = INVALID_DESCRIPTOR
| static

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

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

## ◆ noack_mode

int noack_mode = 0

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

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

## ◆ readchar_buf

unsigned char readchar_buf[BUFSIZ]
| static

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

Referenced by readchar().

## ◆ readchar_bufcnt

int readchar_bufcnt = 0
| static

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

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

## ◆ readchar_bufp

unsigned char* readchar_bufp
| static

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

Referenced by getpkt(), and readchar().

## ◆ readchar_callback

int readchar_callback = NOT_SCHEDULED
| static

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

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

## ◆ remote_debug

int remote_debug = 0

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

Referenced by captured_main(), getpkt(), handle_general_set(), handle_monitor_command(), handle_notif_ack(), notif_event_enque(), putpkt_binary_1(), and readchar().

## ◆ remote_desc

gdb_fildes_t remote_desc = INVALID_DESCRIPTOR
| static

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

Referenced by check_remote_input_interrupt_request(), gdb_connected(), handle_accept_event(), input_interrupt(), read_prim(), remote_close(), remote_open(), and write_prim().

## ◆ remote_is_stdio

int remote_is_stdio = 0
| static

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

Referenced by remote_connection_is_stdio(), and remote_prepare().

## ◆ transport_is_reliable

int transport_is_reliable = 0

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

Referenced by handle_query(), and remote_prepare().

## ◆ using_threads

int using_threads

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

Referenced by prepare_resume_reply().