gdb: File-I/O Overview

 
 E.13.1 File-I/O Overview
 ------------------------
 
 The "File I/O remote protocol extension" (short: File-I/O) allows the
 target to use the host's file system and console I/O to perform various
 system calls.  System calls on the target system are translated into a
 remote protocol packet to the host system, which then performs the
 needed actions and returns a response packet to the target system.  This
 simulates file system operations even on targets that lack file systems.
 
    The protocol is defined to be independent of both the host and target
 systems.  It uses its own internal representation of datatypes and
 values.  Both GDB and the target's GDB stub are responsible for
 translating the system-dependent value representations into the internal
 protocol representations when data is transmitted.
 
    The communication is synchronous.  A system call is possible only
 when GDB is waiting for a response from the 'C', 'c', 'S' or 's'
 packets.  While GDB handles the request for a system call, the target is
 stopped to allow deterministic access to the target's memory.  Therefore
 File-I/O is not interruptible by target signals.  On the other hand, it
 is possible to interrupt File-I/O by a user interrupt ('Ctrl-C') within
 GDB.
 
    The target's request to perform a host system call does not finish
 the latest 'C', 'c', 'S' or 's' action.  That means, after finishing the
 system call, the target returns to continuing the previous activity
 (continue, step).  No additional continue or step request from GDB is
 required.
 
      (gdb) continue
        <- target requests 'system call X'
        target is stopped, GDB executes system call
        -> GDB returns result
        ... target continues, GDB returns to wait for the target
        <- target hits breakpoint and sends a Txx packet
 
    The protocol only supports I/O on the console and to regular files on
 the host file system.  Character or block special devices, pipes, named
 pipes, sockets or any other communication method on the host system are
 not supported by this protocol.
 
    File I/O is not supported in non-stop mode.