File-I/O Overview (Debugging with ROCGDB)

Next: Protocol Basics, Up: File-I/O Remote Protocol Extension [Contents][Index]

#### 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 ROCGDB and the target’s ROCGDB 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 ROCGDB is waiting for a response from the ‘`C`’, ‘`c`’, ‘`S`’ or ‘`s`’ packets. While ROCGDB 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 ROCGDB.

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 ROCGDB is required.

    (gdb) continue
      <- target requests 'system call X'
      target is stopped, ROCGDB executes system call
      -> ROCGDB returns result
      ... target continues, ROCGDB 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.

Next: Protocol Basics, Up: File-I/O Remote Protocol Extension [Contents][Index]