summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc909.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc909.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc909.txt')
-rw-r--r--doc/rfc/rfc909.txt7770
1 files changed, 7770 insertions, 0 deletions
diff --git a/doc/rfc/rfc909.txt b/doc/rfc/rfc909.txt
new file mode 100644
index 0000000..b340e79
--- /dev/null
+++ b/doc/rfc/rfc909.txt
@@ -0,0 +1,7770 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loader Debugger Protocol
+
+
+
+ RFC-909
+
+
+
+
+
+
+
+
+
+
+ Christopher Welles
+
+ BBN Communications Corporation
+
+
+ Walter Milliken
+
+ BBN Laboratories
+
+
+
+
+ July 1984
+
+Status of This Memo
+
+ This RFC specifies a proposed protocol for the ARPA Internet
+ community, and requests discussion and suggestions for
+ improvements. Distribution of this memo is unlimited.
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+ 1 Introduction.......................................... 1
+ 1.1 Purpose of This Document............................ 1
+ 1.2 Summary of Features................................. 2
+
+ 2 General Description................................... 3
+ 2.1 Motivation.......................................... 3
+ 2.2 Relation to Other Protocols......................... 4
+ 2.2.1 Transport Service Requirements.................... 5
+
+ 3 Protocol Operation.................................... 9
+ 3.1 Overview............................................ 9
+ 3.2 Session Management.................................. 9
+ 3.3 Command Sequencing................................. 10
+ 3.4 Data Packing and Transmission...................... 10
+ 3.5 Implementations.................................... 12
+
+ 4 Commands and Formats................................. 15
+ 4.1 Packet Format...................................... 15
+ 4.2 Command Format..................................... 16
+ 4.2.1 Command Header................................... 16
+ 4.3 Addressing......................................... 19
+ 4.3.1 Long Address Format.............................. 20
+ 4.3.2 Short Address Format............................. 25
+
+ 5 Protocol Commands.................................... 29
+ 5.1 HELLO Command...................................... 29
+ 5.2 HELLO_REPLY........................................ 29
+ 5.3 SYNCH Command...................................... 33
+ 5.4 SYNCH_REPLY........................................ 34
+ 5.5 ABORT Command...................................... 35
+ 5.6 ABORT_DONE Reply................................... 35
+ 5.7 ERROR Reply........................................ 36
+ 5.8 ERRACK Acknowledgement............................. 39
+
+ 6 Data Transfer Commands............................... 41
+ 6.1 WRITE Command...................................... 42
+ 6.2 READ Command....................................... 43
+ 6.3 READ_DATA Response................................. 45
+ 6.4 READ_DONE Reply.................................... 47
+ 6.5 MOVE Command....................................... 48
+ 6.6 MOVE_DATA Response................................. 50
+
+
+
+ Page i
+
+
+
+
+
+
+
+ 6.7 MOVE_DONE Reply.................................... 52
+ 6.8 REPEAT_DATA........................................ 53
+ 6.9 WRITE_MASK Command (Optional)...................... 54
+
+ 7 Control Commands..................................... 59
+ 7.1 START Command...................................... 59
+ 7.2 STOP Command....................................... 61
+ 7.3 CONTINUE Command................................... 62
+ 7.4 STEP Command....................................... 62
+ 7.5 REPORT Command..................................... 63
+ 7.6 STATUS Reply....................................... 64
+ 7.7 EXCEPTION Trap..................................... 66
+
+ 8 Management Commands.................................. 69
+ 8.1 CREATE Command..................................... 69
+ 8.2 CREATE_DONE Reply.................................. 74
+ 8.3 DELETE Command..................................... 75
+ 8.4 DELETE_DONE Reply.................................. 76
+ 8.5 LIST_ADDRESSES Command............................. 76
+ 8.6 ADDRESS_LIST Reply................................. 77
+ 8.7 LIST_BREAKPOINTS Command........................... 79
+ 8.8 BREAKPOINT_LIST Reply.............................. 80
+ 8.9 LIST_PROCESSES Command............................. 82
+ 8.10 PROCESS_LIST Reply................................ 83
+ 8.11 LIST_NAMES Command................................ 84
+ 8.12 NAME_LIST Reply................................... 85
+ 8.13 GET_PHYS_ADDR Command............................. 87
+ 8.14 GOT_PHYS_ADDR Reply............................... 88
+ 8.15 GET_OBJECT Command................................ 90
+ 8.16 GOT_OBJECT Reply.................................. 91
+
+ 9 Breakpoints and Watchpoints.......................... 93
+ 9.1 BREAKPOINT_DATA Command............................ 95
+
+ 10 Conditional Commands................................ 99
+ 10.1 Condition Command Format......................... 100
+ 10.2 COUNT Conditions................................. 101
+ 10.3 CHANGED Condition................................ 102
+ 10.4 COMPARE Condition................................ 103
+ 10.5 TEST Condition................................... 105
+
+ 11 Breakpoint Commands................................ 109
+ 11.1 INCREMENT Command................................ 109
+ 11.2 INC_COUNT Command................................ 110
+ 11.3 OR Command....................................... 111
+ 11.4 SET_PTR Command.................................. 112
+ 11.5 SET_STATE Command................................ 113
+
+
+
+ Page ii
+
+
+
+
+
+
+
+ A Diagram Conventions................................. 115
+
+ B Command Summary..................................... 117
+
+ C Commands, Responses and Replies..................... 121
+
+ D Glossary............................................ 123
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page iii
+
+
+
+
+
+
+
+ FIGURES
+
+
+
+
+ 1 Relation to Other Protocols............................ 4
+ 2 Form of Data Exchange Between Layers................... 6
+ 3 Packing of 16-bit Words............................... 11
+ 4 Packing of 20-bit Words............................... 12
+ 5 Network Packet Format................................. 15
+ 6 LDP Command Header Format............................. 16
+ 7 Command Classes....................................... 17
+ 8 Command Types......................................... 18
+ 9 Long Address Format................................... 20
+ 10 Long Address Modes................................... 21
+ 11 Short Address Format................................. 26
+ 12 Short Address Modes.................................. 27
+ 13 HELLO Command Format................................. 29
+ 14 HELLO_REPLY Format................................... 30
+ 15 System Types......................................... 31
+ 16 Target Address Codes................................. 31
+ 17 Feature Levels....................................... 32
+ 18 Options.............................................. 33
+ 19 SYNCH Command Format................................. 33
+ 20 SYNCH_REPLY Format................................... 34
+ 21 ABORT Command Format................................. 35
+ 22 ABORT_DONE Reply Format.............................. 36
+ 23 ERROR Reply Format................................... 37
+ 24 ERROR Codes.......................................... 38
+ 25 ERRACK Command Format................................ 40
+ 26 WRITE Command Format................................. 42
+ 27 READ Command Format.................................. 44
+ 28 DATA Response Format................................. 46
+ 29 READ_DONE Reply Format............................... 47
+ 30 MOVE Command Format.................................. 49
+ 31 MOVE_DATA Response Format............................ 51
+ 32 MOVE_DONE Reply Format............................... 52
+ 33 REPEAT_DATA Command Format........................... 54
+ 34 WRITE_MASK Format.................................... 56
+ 35 START Command Format................................. 60
+ 36 STOP Command Format.................................. 61
+ 37 CONTINUE Command Format.............................. 62
+ 38 STEP Command Format.................................. 63
+ 39 REPORT Command Format................................ 64
+ 40 STATUS Reply Format.................................. 65
+ 41 EXCEPTION Format..................................... 66
+ 42 CREATE Command Format................................ 70
+
+
+
+ Page iv
+
+
+
+
+
+
+
+ 43 Create Types......................................... 71
+ 44 CREATE BREAKPOINT Format............................. 71
+ 45 CREATE MEMORY_OBJECT Format.......................... 73
+ 46 CREATE_DONE Reply Format............................. 74
+ 47 DELETE Command Format................................ 75
+ 48 DELETE_DONE Reply Format............................. 76
+ 49 LIST_ADDRESSES Command Format........................ 77
+ 50 ADDRESS_LIST Reply Format............................ 78
+ 51 LIST_BREAKPOINTS Command Format...................... 80
+ 52 BREAKPOINT_LIST Reply Format......................... 81
+ 53 LIST_PROCESSES Command Format........................ 82
+ 54 PROCESS_LIST Reply Format............................ 84
+ 55 LIST_NAMES Command Format............................ 85
+ 56 NAME_LIST Reply Format............................... 86
+ 57 GET_PHYS_ADDR Command Format......................... 88
+ 58 GOT_PHYS_ADDR Reply Format........................... 89
+ 59 GET_OBJECT Command Format............................ 90
+ 60 GOT_OBJECT Reply Format.............................. 91
+ 61 Commands to Manipulate Breakpoints................... 93
+ 62 Breakpoint Conditional Command Lists................. 95
+ 63 BREAKPOINT_DATA Command Format....................... 96
+ 64 Breakpoint Data Stream Format........................ 97
+ 65 Conditional Command Summary.......................... 99
+ 66 Condition Command Header............................ 101
+ 67 COUNT Condition Format.............................. 101
+ 68 CHANGED Condition................................... 102
+ 69 COMPARE Condition................................... 104
+ 70 TEST Condition...................................... 106
+ 71 Breakpoint Command Summary.......................... 109
+ 72 INCREMENT Command Format............................ 110
+ 73 INC_COUNT Command Format............................ 111
+ 74 OR Command Format................................... 111
+ 75 SET_PTR Command Format.............................. 112
+ 76 SET_STATE Command Format............................ 113
+ 77 Sample Diagram...................................... 115
+ 78 Command Summary..................................... 118
+ 79 Commands, Responses and Replies..................... 122
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page v
+
+
+
+
+
+
+
+ CHAPTER 1
+
+
+ Introduction
+
+
+
+ The Loader-Debugger Protocol (LDP) is an application layer
+ protocol for loading, dumping and debugging target machines
+ from hosts in a network environment. This protocol is designed
+ to accommodate a variety of target cpu types. It provides a
+ powerful set of debugging services. At the same time, it is
+ structured so that a simple subset may be implemented in
+ applications like boot loading where efficiency and space are
+ at a premium.
+
+
+ The authors would like to thank Dan Franklin and Peter
+ Cudhea for providing many of the ideas on which this protocol is
+ based.
+
+
+
+
+ 1.1 Purpose of This Document
+
+ This is a technical specification for the LDP protocol. It
+ is intended to be comprehensive enough to be used by implementors
+ of the protocol. It contains detailed descriptions of the
+ formats and usage of over forty commands. Readers interested in
+ an overview of LDP should read the Summary of Features, below,
+ and skim Sections 2 through 3.1. Also see Appendix B, the
+ Command Summary. The remainder of the document reads best when
+ accompanied by strong coffee or tea.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 1
+
+
+
+ RFC-909 July 1984
+
+
+
+ 1.2 Summary of Features
+
+ LDP has the following features:
+
+ o commands to perform loading, dumping and debugging
+
+ o support for multiple connections to a single target
+
+ o reliable performance in an internet environment
+
+ o a small protocol subset for target loaders
+
+ o addressing modes and commands to support multiple
+ machine types
+
+ o breakpoints and watchpoints which run in the target
+ machine.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 2
+
+
+
+ LDP Specification General Description
+
+
+
+ CHAPTER 2
+
+
+ General Description
+
+
+
+ 2.1 Motivation
+
+ LDP is an application protocol that provides a set of
+ commands used by application programs for loading, dumping and
+ debugging target machines across a network.
+
+ The goals of this protocol are shown in the following list:
+
+
+ o The protocol should support various processor types and
+ operating systems. Overhead and complexity should be
+ minimized for simpler cases.
+
+
+ o The protocol should provide support for applications in
+ which more than one user can debug the same target
+ machine. This implies an underlying transport mechanism
+ that supports multiple connections between a host-target
+ pair.
+
+
+ o LDP should have a minimal subset of commands for boot
+ loading and dumping. Target machine implementations of
+ these applications are often restricted in the amount of
+ code-space they may take. The services needed for
+ loading and dumping should be provided in a small,
+ easily implemented set of commands.
+
+
+ o There should be a means for communicating exceptions and
+ errors from the target LDP process to the host process.
+
+
+ o LDP should allow the application to implement a full set
+ of debugging functions without crippling the performance
+ of the target's application (i.e., PSN, PAD, gateway).
+ For example, a breakpoint mechanism that halts the
+ target machine while breakpoint commands are sent from
+ the host to the target is of limited usefulness, since
+ the target will be unable to service the real-time
+
+
+
+ Page 3
+
+
+
+ RFC-909 July 1984
+
+
+
+ demands of its application.
+
+
+
+ 2.2 Relation to Other Protocols
+
+ LDP is an application protocol that fits into the layered
+ internet protocol environment. Figure 1 illustrates the place of
+ LDP in the protocol hierarchy.
+
+
+
+
+
+ +------------------------------+
+ | LDP | Application
+ +------------------------------+ Layer
+ | |
+ | |
+ | |
+ +---------+ +---------+
+ | RDP | or | TCP | Transport Layer
+ +---------+ +---------+
+ | or | |
+ | | |
+ | +--------------------+
+ | | Internet Protocol | Internetwork
+ | +--------------------+ Layer
+ | |
+ +------------------------------+
+ | Network Access Protocol | Network Layer
+ +------------------------------+
+
+
+ Relation to Other Protocols
+ Figure 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 4
+
+
+
+ LDP Specification General Description
+
+
+
+ 2.2.1 Transport Service Requirements
+
+ LDP requires that the underlying transport layer:
+
+
+
+ o allow connections to be opened by specifying a network
+ (or internet) address. Support passive and active
+ opens.
+
+ o for each connection, specify the maximum message size.
+
+ o provide a mechanism for sending and receiving messages
+ over an open connection.
+
+ o deliver messages reliably and in sequence
+
+ o support multiple connections, and distinguish messages
+ associated with different connections. This is only a
+ requirement where LDP is expected to support several
+ users at the same time.
+
+ o explictly return the outcome (success/failure) of each
+ request (open, send, receive), and provide a means of
+ querying the status of a connection (unacknowledged
+ message count, etc.).
+
+
+ Data is passed from the application program to the LDP user
+ process in the form of commands. In the case of an LDP server
+ process, command responses originate in LDP itself. Below LDP is
+ the transport protocol. The Reliable Data Protocol (RDP --
+ RFC 908) is the recommended transport procotol. Data is passed
+ across the LDP/RDP interface in the form of messages. (TCP may
+ be used in place of RDP, but it will be less efficient and it
+ will require more resources to implement.) An internet layer
+ (IP) normally comes between RDP and the network layer, but RDP
+ may exchange data packets directly with the network layer.
+
+ Figure 2 shows the flow of data across the protocol
+ interfaces:
+
+
+
+
+
+
+
+
+
+ Page 5
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ +------+
+ | |
+ |Appli-|
+ |cation|
+ | |
+ +------+
+ ^
+ Commands |
+ V
+ +------+
+ | |
+ | LDP |
+ | |
+ +------+
+ ^
+ Messages |
+ V
+ +-----+
+ | |
+ | RDP |
+ | |
+ +-----+
+ ^
+ Segments |
+ V
+ +----+
+ | |
+ | IP |
+ | |
+ +----+
+ ^
+ Datagrams |
+ V
+ ? * !
+ $ = ^ +
+ *
+ > Internet
+ , ?
+ ! )
+ * % $
+
+
+ Form of Data Exchange Between Layers
+ Figure 2
+
+
+
+
+ Page 6
+
+
+
+ LDP Specification General Description
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 7
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 8
+
+
+
+ LDP Specification Protocol Operation
+
+
+
+ CHAPTER 3
+
+
+ Protocol Operation
+
+
+
+ 3.1 Overview
+
+ An LDP session consists of an exchange of commands and
+ responses between an LDP user process and an LDP server process.
+ Normally, the user process resides on a host machine (a
+ timesharing computer used for network monitoring and control),
+ and the server process resides on a target machine (PSN, PAD,
+ gateway, etc.). Throughout this document, host and target are
+ used as synonyms for user process and server process,
+ respectively, although in some implementations (the Butterfly,
+ for example) this correspondence may be reversed. The host
+ controls the session by sending commands to the target. Some
+ commands elicit responses, and all commands may elicit an error
+ reply.
+
+ The protocol contains five classes of commands: protocol,
+ data transfer, management, control and breakpoint. Protocol
+ commands are used to verify the command sequencing mechanism and
+ to handle erroneous commands. Data transfer commands involve the
+ transfer of data from one place to another, such as for memory
+ examine/deposit, or loading. Management commands are used for
+ creating and deleting objects (processes, breakpoints,
+ watchpoints, etc.) in the target machine. Control commands are
+ used to control the execution of target code and breakpoints.
+ Breakpoint commands are used to control the execution of commands
+ inside breakpoints and watchpoints.
+
+
+
+ 3.2 Session Management
+
+ An LDP session consists of a series of commands sent from a
+ host LDP to a target LDP, some of which may be followed by
+ responses from the target. A session begins when a host opens a
+ transport connection to a target listening on a well known port.
+ LDP uses RDP port number zzz or TCP port number yyy. When the
+ connection has been established, the host sends a HELLO command,
+ and the target replies with a HELLO_REPLY. The HELLO_REPLY
+ contains parameters that describe the target's implementation of
+ LDP, including protocol version, implementation level, system
+
+
+
+ Page 9
+
+
+
+ RFC-909 July 1984
+
+
+
+ type, and address format. The session terminates when the host
+ closes the underlying transport connection. When the target
+ detects that the transport connection has been closed, it should
+ deallocate any resources dedicated to the session.
+
+ The target process is the passive partner in an LDP session,
+ and it waits for the host process to terminate the session. As
+ an implementation consideration, either LDP or the underlying
+ transport protocol in the target should have a method for
+ detecting if the host process has died. Otherwise, an LDP
+ target that supported only one connection could be rendered
+ useless by a host that crashed in the middle of a session. The
+ problem of detecting half-dead connections can be avoided by
+ taking a different tack: the target could allow new connections
+ to usurp inactive connections. A connection with no activity
+ could be declared 'dead', but would not be usurped until the
+ connection resource was needed. However, this would still
+ require the transport layer to support two connection channels:
+ one to receive connection requests, and another to use for an
+ active connection.
+
+
+
+
+ 3.3 Command Sequencing
+
+ Each command sent from the host to the target has a sequence
+ number. The sequence number is used by the target to refer to
+ the command in normal replies and error replies. To save space,
+ these numbers are not actually included in host commands.
+ Instead, each command sent from the host is assigned an implicit
+ sequence number. The sequence number starts at zero at the
+ beginning of the LDP session and increases by one for each
+ command sent. The host and target each keep track of the current
+ number. The SYNCH <sequence number> command may be used by the
+ host to synchronize the sequence number.
+
+
+
+
+
+ 3.4 Data Packing and Transmission
+
+ The convention for the order of data packing was chosen for
+ its simplicity: data are packed most significant bit first, in
+ order of increasing target address, into eight-bit octets. The
+ octets of packed data are transmitted in sequential order.
+
+
+
+ Page 10
+
+
+
+ LDP Specification Protocol Operation
+
+
+
+ Data are always packed according to the address format of
+ the target machine. For example, in an LDP session between a
+ 20-bit host and a 16-bit target, 16-bit words (packed into
+ octets) are transmitted in both directions. For ease of
+ discussion, targets are treated here as if they have uniform
+ address spaces. In practice, the size of address units may vary
+ within a target -- 16-bit macromemory, 32-bit micromemory, 10-bit
+ dispatch memory, etc. Data packing between host and target is
+ tailored to the units of the current target address space.
+
+ Figures showing the packing of data for targets with various
+ address unit sizes are given below. The order of transmission
+ with respect to the diagrams is top to bottom. Bit numbering in
+ the following diagrams refers to significance in the octet: bit
+ zero is the least significant bit in an octet. For an
+ explanation of the bit numbering convention that applies in the
+ rest of this document, please see Appendix A.
+
+ The packing of data for targets with word lengths that are
+ multiples of 8 is straightforward. The following diagram
+ illustrates 16-bit packing:
+
+
+
+ 7 0
+ ---------------------------------
+ Octet 0 | WORD 0 bits 15-08 |
+ ---------------------------------
+ Octet 1 | WORD 0 bits 07-00 |
+ ---------------------------------
+ Octet 2 | WORD 1 bits 15-08 |
+ ---------------------------------
+ Octet 3 | WORD 1 bits 07-00 |
+ ---------------------------------
+ *
+ *
+ *
+ ---------------------------------
+ Octet 2n-1 | WORD n bits 07-00 |
+ ---------------------------------
+
+
+ Packing of 16-bit Words
+ Figure 3
+
+
+
+
+
+
+ Page 11
+
+
+
+ RFC-909 July 1984
+
+
+
+ Packing for targets with peculiar word lengths is more
+ complicated. For 20-bit machines, 2 words of data are packed
+ into 5 octets. When an odd number of 20-bit words are
+ transmitted, the partially used octet is included in the length
+ of the command, and the octet is padded to the right with zeroes.
+
+
+
+ 7 0
+ ---------------------------------
+ Octet 0 | WORD 0 bits 19-12 |
+ ---------------------------------
+ Octet 1 | WORD 0 bits 11-04 |
+ ---------------------------------
+ Octet 2 | WORD 0 03-00 | WORD 1 19-16 |
+ ---------------------------------
+ Octet 3 | WORD 1 bits 15-08 |
+ ---------------------------------
+ Octet 4 | WORD 1 bits 07-00 |
+ ---------------------------------
+
+
+ Packing of 20-bit Words
+ Figure 4
+
+
+
+
+
+
+
+ 3.5 Implementations
+
+ A subset of LDP commands may be implemented in targets where
+ machine resources are limited and the full capabilities of LDP
+ are not needed. There are three basic levels of target
+ implementations: LOADER_DUMPER, BASIC_DEBUGGER and
+ FULL_DEBUGGER. The target communicates its LDP implementation
+ level to the host during session initiation. The implementation
+ levels are described below:
+
+
+
+
+
+
+
+
+
+
+ Page 12
+
+
+
+ LDP Specification Protocol Operation
+
+
+
+ LOADER_DUMPER
+
+ Used for loading/dumping of the target machine.
+ Includes all protocol class commands and replies; data
+ transfer commands READ, WRITE, MOVE and their responses;
+ control command START and control reply EXCEPTION.
+ Understands at least PHYS_MACRO and HOST addressing modes;
+ others if desired.
+
+ BASIC_DEBUGGER
+
+ Implements LOADER_DUMPER commands, all control commands,
+ all addressing modes appropriate to the target machine, but
+ does not have finite state machine (FSM) breakpoints or
+ watchpoints. Default breakpoints are implemented. The
+ target understands long addressing mode.
+
+ FULL_DEBUGGER
+
+ Implements all commands and addressing modes appropriate to
+ the target machine, and includes breakpoint commands,
+ conditional commands and BREAKPOINT_DATA. Watchpoints are
+ optional.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 13
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 14
+
+
+
+ LDP Specification Commands and Formats
+
+
+
+ CHAPTER 4
+
+
+ Commands and Formats
+
+
+
+ 4.1 Packet Format
+
+ LDP commands are enclosed in RDP transport messages. An RDP
+ message may contain more than one command, but each command must
+ fit entirely within a single message. Network packets containing
+ LDP commands have the format shown in Figure 5.
+
+
+ +----------------+
+ | Local Network |
+ | Header(s) |
+ +----------------+
+ | IP Header |
+ +----------------+
+ | RDP Header |
+ +----------------+ +-+
+ | LDP Command | |
+ | Header | |
+ +----------------+ |
+ | Optional | |
+ . LDP . | LDP Command
+ . Data . | Format
+ | | |
+ +----------------+ |
+ | LDP Padding | |
+ +----------------+ +-+
+ | Additional |
+ . LDP .
+ . Commands .
+ . .
+ +----------------+
+
+
+ Network Packet Format
+ Figure 5
+
+
+
+
+
+
+
+
+ Page 15
+
+
+
+ RFC-909 July 1984
+
+
+
+ 4.2 Command Format
+
+ LDP commands consist of a standard two-word header followed
+ optionally by additional data. To facilitate parsing of multi-
+ command messages, all commands contain an even number of octets.
+ Commands that contain an odd number of data octets must be padded
+ with a null octet.
+
+ The commands defined by the LDP specification are intended
+ to be of universal application to provide a common basis for all
+ implementations. Command class and type codes from 0 to 63. are
+ reserved by the protocol. Codes above 63. are available for the
+ implementation of target-specific commands.
+
+
+
+
+ 4.2.1 Command Header
+
+ LDP commands begin with a fixed length header. The header
+ specifies the type of command and its length in octets.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length (octets) |
+ +---------------+---------------+
+ 1 | Command Class | Command Type |
+ +---------------+---------------+
+
+
+ LDP Command Header Format
+ Figure 6
+
+
+ HEADER FIELDS:
+
+ Command Length
+
+ The command length gives the total number of octets in the
+ command, including the length field and data, and excluding
+ padding.
+
+ Command Class
+ Command Type
+
+
+
+
+ Page 16
+
+
+
+ LDP Specification Commands and Formats
+
+
+
+ The command class and type together specify a particular
+ command. The class selects one of six command categories,
+ and the type gives the command within that category. All
+ codes are decimal. The symbols given in Figures 7 and 8 for
+ command classes and types are used in the remainder of this
+ document for reference.
+
+ The command classes that have been defined are:
+
+
+ Command Class | Symbol
+ ----------------+-----------
+ 1 | PROTOCOL
+ 2 | DATA_TRANSFER
+ 3 | CONTROL
+ 4 | MANAGEMENT
+ 5 | BREAKPOINT
+ 6 | CONDITION
+ 7 - 63 | <reserved>
+
+
+ Command Classes
+ Figure 7
+
+
+ Command type codes are assigned in order of expected
+ frequency of use. Commands and their responses/replies are
+ numbered sequentially. The command types, ordered by
+ command class, are:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 17
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ Command Class | Command Type | Symbol
+ ----------------+---------------+----------
+ PROTOCOL | 1 | HELLO
+ | 2 | HELLO_REPLY
+ | 3 | SYNCH
+ | 4 | SYNCH_REPLY
+ | 5 | ERROR
+ | 6 | ERRACK
+ | 7 | ABORT
+ | 8 | ABORT_DONE
+ | 9 - 63 | <reserved>
+ | |
+ DATA_TRANSFER | 1 | WRITE
+ | 2 | READ
+ | 3 | READ_DONE
+ | 4 | READ_DATA
+ | 5 | MOVE
+ | 6 | MOVE_DONE
+ | 7 | MOVE_DATA
+ | 8 | REPEAT_DATA
+ | 9 | BREAKPOINT_DATA
+ | 10 | WRITE_MASK
+ | 11 - 63 | <reserved>
+ | |
+ CONTROL | 1 | START
+ | 2 | STOP
+ | 3 | CONTINUE
+ | 4 | STEP
+ | 5 | REPORT
+ | 6 | STATUS
+ | 7 | EXCEPTION
+ | 8 - 63 | <reserved>
+ | |
+ MANAGEMENT | 1 | CREATE
+ | 2 | CREATE_DONE
+ | 3 | DELETE
+ | 4 | DELETE_DONE
+ | 5 | LIST_ADDRESSES
+ | 6 | ADDRESS_LIST
+ | 7 | GET_PHYS_ADDRESS
+ | 8 | GOT_PHYS_ADDRESS
+ | 9 | GET_OBJECT
+ | 10 | GOT_OBJECT
+ | 11 | LIST_BREAKPOINTS
+ | 12 | BREAKPOINT_LIST
+
+
+
+ Page 18
+
+
+
+ LDP Specification Commands and Formats
+
+
+
+ | 13 | LIST_NAMES
+ | 14 | NAME_LIST
+ | 15 | LIST_PROCESSES
+ | 16 | PROCESS_LIST
+ | 17 - 63 | <reserved>
+ | |
+ BREAKPOINT | 1 | INCREMENT
+ | 2 | INC_COUNT
+ | 3 | OR
+ | 4 | SET_PTR
+ | 5 | SET_STATE
+ | 6 - 63 | <reserved>
+ | |
+ CONDITION | 1 | CHANGED
+ | 2 | COMPARE
+ | 3 | COUNT_EQ
+ | 4 | COUNT_GT
+ | 5 | COUNT_LT
+ | 6 | TEST
+ | 7 - 63 | <reserved>
+
+
+ Command Types
+ Figure 8
+
+
+
+
+
+ 4.3 Addressing
+
+ Addresses are used in LDP commands to refer to memory
+ locations, processes, buffers, breakpoints and other entities.
+ Many of these entities are machine-dependent; some machines have
+ named objects, some machines have multiple address spaces, the
+ size of address spaces varies, etc. The format for specifying
+ addresses needs to be general enough to handle all of these
+ cases. This speaks for a large, hierarchically structured
+ address format. However, the disadvantage of a large format is
+ that it imposes extra overhead on communication with targets that
+ have simpler address schemes.
+
+ LDP resolves this conflict by employing two address formats:
+ a short three-word format for addressing simpler targets, and a
+ long five-word format for others. Each target LDP is required to
+ implement at least one of these formats. At the start of an LDP
+ session, the target specifies the address format(s) it uses in
+
+
+
+ Page 19
+
+
+
+ RFC-909 July 1984
+
+
+
+ the Flag field of the HELLO_REPLY message. In each address, the
+ first bit of the mode octet is a format flag: 0 indicates LONG
+ address format, and 1 indicates SHORT format.
+
+
+
+
+ 4.3.1 Long Address Format
+
+ The long address format is five words long and consists of a
+ three-word address descriptor and a two-word offset (see Figure
+ 9). The descriptor specifies an address space to which the offset
+ is applied. The descriptor is subdivided into several fields, as
+ described below. The structuring of the descriptor is designed
+ to support complex addressing modes. For example, on targets
+ with multiple processes, descriptors may reference virtual
+ addresses, registers, and other entities within a particular
+ process.
+
+ The addressing modes defined below are intended as a base to
+ which target-specific modes may be added. Modes up to 63. are
+ reserved by the protocol. The range 64. to 127. may be used for
+ target-specific address modes.
+
+
+ Long Format - Format bit is LONG=0
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +-------------------------------+ +-+
+ |0| Mode | Mode Arg | |
+ +-------------------------------+ |
+ | (31-16) | | Descriptor
+ +---- ID ---+ |
+ | (15-0) | |
+ +-------------------------------+ +-+
+ | (31-16) | |
+ +---- Offset ---+ | Offset
+ | (15-0) | |
+ +-------------------------------+ +-+
+
+
+ Long Address Format
+ Figure 9
+
+
+ LONG ADDRESS FIELDS:
+
+
+
+ Page 20
+
+
+
+ LDP Specification Commands and Formats
+
+
+
+ Mode
+
+ The address mode identifies the type of address space being
+ referenced. The mode is qualified by the mode argument and
+ the ID field. Implementation of modes other than physical
+ and host is machine-dependent. Currently defined modes and
+ the address space they reference are shown in Figure 10.
+
+
+ Mode | Symbol | Address space
+ -----+----------------------+---------------------------
+
+ 0 HOST Host
+ 1 PHYS_MACRO Macromemory
+ 2 PHYS_MICRO Micromemory
+ 3 PHYS_I/O I/O space
+ 4 PHYS_MACRO_PTR Macro contains a pointer
+ 5 PHYS_REG Register
+ 6 PHYS_REG_OFFSET Register plus offset
+ 7 PHYS_REG_INDIRECT Register contains address
+ of a pointer
+
+ 8 PROCESS_CODE Process code space
+ 9 PROCESS_DATA Process data space
+ 10 PROCESS_DATA_PTR Process data contains a ptr
+ 11 PROCESS_REG Process virtual register
+ 12 PROCESS_REG_OFFSET Process register plus offset
+ 13 PROCESS_REG_INDIRECT Process register contains
+ address of a pointer
+
+ 14 OBJECT_OFFSET Memory object (queue, pool)
+ 15 OBJECT_HEADER System header for an object
+ 16 BREAKPOINT Breakpoint
+ 17 WATCHPOINT Watchpoint
+ 18 BPT_PTR_OFFSET Breakpoint ptr plus offset
+ 19 BPT_PTR_INDIRECT Breakpoint ptr plus offset
+ gives address of a pointer
+ 20 - <reserved>
+ 63
+
+
+ Long Address Modes
+ Figure 10
+
+
+
+ Mode Argument
+
+
+
+ Page 21
+
+
+
+ RFC-909 July 1984
+
+
+
+ Provides a numeric argument to the mode field. Specifies
+ the register in physical and process REG and REG_OFFSET
+ modes.
+
+ ID Field
+
+ Identifies a particular process, buffer or object.
+
+ Offset
+
+ The offset into the linear address space defined by the
+ mode. The size of the machine word determines the number of
+ significant bits in the offset. Likewise, the addressing
+ units of the target are the units of the offset.
+
+ The interpretation of the mode argument, ID field and offset for
+ each address mode is given below:
+
+ HOST
+
+ The ID and offset fields are numbers assigned arbitrarily by
+ the host side of the debugger. These numbers are used in
+ MOVE and MOVE_DATA messages. MOVE_DATA responses containing
+ this mode as the destination are sent by the target to the
+ host. This may occur in debugging when data is sent to the
+ host from the target breakpoint.
+
+ PHYS_MACRO
+
+ The offset contains the 32-bit physical address of a
+ location in macromemory. The mode argument and ID field are
+ not used. For example, mode=PHYS_MACRO and offset=1000
+ specifies location 1000 in physical memory.
+
+ PHYS_MICRO
+
+ Like PHYS_MACRO, but the location is in micromemory.
+
+ PHYS_I/O
+
+ Like PHYS_MACRO, but the location is in I/O space.
+
+ PHYS_MACRO_PTR
+
+ The offset contains the address of a pointer in macromemory.
+ The location pointed to (the effective address) is also in
+ macromemory. The mode argument and ID field are unused.
+
+
+
+ Page 22
+
+
+
+ LDP Specification Commands and Formats
+
+
+
+ PHYS_REG
+
+ The mode argument gives the physical register. If the
+ register is used by the LDP target process, then the saved
+ copy from the previous context is used. This comment
+ applies to PHYS_REG_OFFSET mode as well. The ID field is
+ not used.
+
+ PHYS_REG_OFFSET
+
+ The offset is added to the contents of a register given as
+ the mode argument. The result is used as a physical address
+ in macromemory. ID is unused.
+
+ PHYS_REG_INDIRECT
+
+ The register specified in the mode arg contains the address
+ of a pointer in macromemory. The effective address is the
+ macromemory location specified in the pointer, plus the
+ offset. The ID field is unused.
+
+ PROCESS_CODE
+
+ The ID is a process ID, the offset is into the code space
+ for this process. Mode argument is not used.
+
+ PROCESS_DATA
+
+ The ID is a process ID, the offset is into the data space
+ for this process. Mode argument is not used. On systems
+ that do not distinguish between code and data space, these
+ two modes are equivalent, and reference the virtual address
+ space of the process.
+
+ PROCESS_DATA_PTR
+
+ The offset contains the address of a pointer in the data
+ space of the process specified by the ID. The location
+ pointed to (the effective address) is also in the data
+ space. The mode argument is not used.
+
+ PROCESS_REG
+
+ Accesses the registers (and other system data) of the
+ process given by the ID field. Mode argument 0 starts the
+ registers. After the registers, the mode argument is an
+ offset into the system area for the process.
+
+
+
+ Page 23
+
+
+
+ RFC-909 July 1984
+
+
+
+ PROCESS_REG_OFFSET
+
+ The offset plus the contents of the register given in the
+ mode argument specifies a location in the data space of the
+ process specified by the ID.
+
+ PROCESS_REG_INDIRECT
+
+ The register specified in the mode arg contains the address
+ of a pointer in the data space of the process given by the
+ ID. The effective address is the location in process data
+ space specified in the pointer, plus the offset.
+
+ OBJECT_OFFSET (optional)
+
+ The offset is into the memory space defined by the object ID
+ in ID. Recommended for remote control of parameter
+ segments.
+
+ OBJECT_HEADER (optional)
+
+ The offset is into the system header for the object
+ specified by the ID. Intended for use with the Butterfly.
+
+ BREAKPOINT
+
+ The descriptor specifies a breakpoint. The offset is never
+ used, this type is only used in descriptors referring to
+ breakpoints. (See Breakpoints and Watchpoints, below, for
+ an explanation of breakpoint descriptors.)
+
+ WATCHPOINT
+
+ The descriptor specifies a watchpoint. The offset is never
+ used, this type is only used in descriptors referring to
+ watchpoints. (See Breakpoints and Watchpoints, below, for
+ an explanation of watchpoint descriptors).
+
+ BPT_PTR_OFFSET
+
+ For this mode and BPT_PTR_INDIRECT, the mode argument
+ specifies one of two breakpoint pointer variables local to
+ the breakpoint in which this address occurs. These pointers
+ and the SET_PTR command which manipulates them provide for
+ an arbitrary amount of address indirection. They are
+ intended for use in traversing data structures: for example,
+ chasing queues. In BPT_PTR_OFFSET, the offset is added to
+
+
+
+ Page 24
+
+
+
+ LDP Specification Commands and Formats
+
+
+
+ the pointer variable to give the effective address. In
+ targets which support multiple processes, the location is in
+ the data space of the process given by the ID. Otherwise,
+ the location is a physical address in macro-memory.
+ BPT_PTR.* modes are valid only in breakpoints and
+ watchpoints.
+
+ BPT_PTR_INDIRECT
+
+ Like BPT_PTR_OFFSET, except that it uses one more level of
+ indirection. The pointer variable given by the mode
+ argument plus the offset specify an address which points to
+ the effective address. See the description of
+ BPT_PTR_OFFSET for a discussion of usage, limitations and
+ address space.
+
+
+
+
+ 4.3.2 Short Address Format
+
+ The short address format is intended for use in
+ implementations where protocol overhead must be minimized. This
+ format is a subset of the long address format: it contains the
+ same fields except for the ID field. Therefore, the short
+ addressing format supports only HOST and PHYS_* address modes.
+ Only the LOADER_DUMPER implementation level commands may be used
+ with the short addressing format. The short address format is
+ three words long, consisting of a 16-bit word describing the
+ address space, and a 32-bit offset.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 25
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ Short Format - Format bit is SHORT=1
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +-------------------------------+
+ |1| Mode | Mode Argument |
+ +-------------------------------+ +-+
+ | (31-16) | |
+ +---- Offset ---+ | Offset
+ | (15-0) | |
+ +-------------------------------+ +-+
+
+
+ Short Address Format
+ Figure 11
+
+
+ SHORT ADDRESS FIELDS:
+ Mode
+
+ The high-order bit is 1, indicating the short address
+ format. A list of the address modes supported is given
+ below. The interpretation of the remaining fields is as
+ described above for the long addressing format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 26
+
+
+
+ LDP Specification Commands and Formats
+
+
+
+
+
+ Mode | Symbol | Address space
+ -----+--------------------+---------------------------
+
+ 0 HOST Host
+ 1 PHYS_MACRO Macro-memory
+ 2 PHYS_MICRO Micro-memory
+ 3 PHYS_I/O I/O space
+ 4 PHYS_MACRO_PTR Macro contains a pointer
+ 5 PHYS_REG Register
+ 6 PHYS_REG_OFFSET Register plus offset
+ 7 PHYS_REG_INDIRECT Register contains address
+ of a pointer
+ 8 -
+ 32 <reserved>
+
+
+ Short Address Modes
+ Figure 12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 27
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 28
+
+
+
+ LDP Specification Protocol Commands
+
+
+
+ CHAPTER 5
+
+
+ Protocol Commands
+
+
+
+ Protocol commands are used for error handling, for
+ synchronizing the command sequence number, and for communicating
+ protocol implementation parameters. Every protocol command has a
+ corresponding reply. All protocol commands are sent from the
+ host to the target, with replies flowing in the opposite
+ direction.
+
+
+
+
+ 5.1 HELLO Command
+
+ The HELLO command is sent by the host to signal the start of
+ an LDP session. The target responds with HELLO_REPLY.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 4 |
+ +---------------+---------------+
+ 1 | PROTOCOL | HELLO |
+ +---------------+---------------+
+
+
+ HELLO Command Format
+ Figure 13
+
+
+
+
+
+
+ 5.2 HELLO_REPLY
+
+ A HELLO_REPLY is sent by the target in response to the HELLO
+ command at the start of an LDP session. This reply is used to
+ inform the host about the target's implementation of LDP.
+
+
+
+
+
+ Page 29
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 10 |
+ +---------------+---------------+
+ 1 | PROTOCOL | HELLO_REPLY |
+ +---------------+---------------+
+ 2 | LDP Version | System Type |
+ +---------------+---------------+
+ 3 | Options |W|S| Implementation|
+ +---------------+---------------+
+ 4 | Address Code | Reserved |
+ +---------------+---------------+
+
+
+ HELLO_REPLY Format
+ Figure 14
+
+
+
+ HELLO_REPLY FIELDS:
+
+ LDP Version
+
+ The target's LDP protocol version. If the current
+ host protocol version does not agree with the target's
+ protocol version, the host may terminate the session, or
+ may continue it, at the discretion of the implementor. The
+ current version number is 2.
+
+ System Type
+
+ The type of system running on the target. This is used as a
+ check against what the host thinks the target is. The host
+ is expected to have a table of target system types with
+ information about target address spaces, target-specific
+ commands and addressing modes, and so forth.
+
+ Currently defined system types are shown in Figure 15. This
+ list includes some systems normally thought of as 'hosts'
+ (e.g. C70, VAX), for implementations where targets actively
+ initiate and direct a load of themselves.
+
+
+
+
+
+
+ Page 30
+
+
+
+ LDP Specification Protocol Commands
+
+
+
+
+
+ Code | System | Description
+ --------+---------------+---------------------------
+ 1 C30_16_BIT BBN 16-bit C30
+ 2 C30_20_BIT BBN 20-bit C30
+ 3 H316 Honeywell-316
+ 4 BUTTERFLY BBN Butterfly
+ 5 PDP-11 DEC PDP-11
+ 6 C10 BBN C10
+ 7 C50 BBN C50
+ 8 PLURIBUS BBN Pluribus
+ 9 C70 BBN C70
+ 10 VAX DEC VAX
+ 11 MACINTOSH Apple MacIntosh
+
+
+ System Types
+ Figure 15
+
+
+ Address Code
+
+ The address code indicates which LDP address format(s) the
+ target is prepared to use. Address codes are show in Figure
+ 16.
+
+
+ Address Code | Symbol | Description
+ --------------+---------------+-----------------------------
+
+ 1 LONG_ADDRESS Five word address format.
+ Supports all address modes
+ and commands.
+
+ 2 SHORT_ADDRESS Three word address format.
+ Supports only physical and
+ host address modes. Only
+ the LOADER_DUMPER set of
+ commands are supported.
+
+
+ Target Address Codes
+ Figure 16
+
+
+ Implementation
+
+
+
+ Page 31
+
+
+
+ RFC-909 July 1984
+
+
+
+ The implementation level specifies which features of
+ the protocol are implemented in the target. There are
+ three levels of protocol implementation. These levels are
+ intended to correspond to the three most likely applications
+ of LDP: simple loading and dumping, basic debugging, and
+ full debugging. (Please see Implementations, above, for a
+ detailed description of implementation levels.) There are
+ are also several optional features that are not included in
+ any particular level.
+
+ Implementation levels are cumulative, that is, each higher
+ level includes the features of all previous levels. The
+ levels are shown in Figure 17.
+
+
+
+ Feature Level | Symbol | Description
+ --------------+---------------+-----------------------------
+ 1 LOADER_DUMPER Loader/dumper subset of LDP
+ 2 BASIC_DEBUGGER Control commands, CREATE
+ 3 FULL_DEBUGGER FSM breakpoints
+
+
+ Feature Levels
+ Figure 17
+
+
+
+ Options
+
+ The options field (see Figure 18) is an eight-bit flag
+ field. Bit flags are used to indicate if the target has
+ implemented particular optional commands. Not all optional
+ commands are referenced in this field. Commands whose
+ implementation depends on target machine features are
+ omitted. The LDP application is expected to 'know' about
+ target features that are not intrinsic to the protocol.
+ Examples of target-dependent commands are commands that
+ refer to named objects (CREATE, LIST_NAMES).
+
+
+
+
+
+
+
+
+
+
+
+ Page 32
+
+
+
+ LDP Specification Protocol Commands
+
+
+
+
+
+ Mask | Symbol | Description
+ ------+-------------+---------------+-----------------
+ 1 STEP The STEP command is implemented
+ 2 WATCHPOINTS Watchpoints are implemented
+
+
+ Options
+ Figure 18
+
+
+
+
+
+
+ 5.3 SYNCH Command
+
+ The SYNCH command is sent by the host to the target. The
+ target responds with a SYNCH_REPLY. The SYNCH - SYNCH_REPLY
+ exchange serves two functions: it synchronizes the host-to-target
+ implicit sequence number and acts as a cumulative acknowledgement
+ of the receipt and execution of all host commands up to the
+ SYNCH.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 6 |
+ +---------------+---------------+
+ 1 | PROTOCOL | SYNCH |
+ +---------------+---------------+
+ 2 | Sequence Number |
+ +---------------+---------------+
+
+
+ SYNCH Command Format
+ Figure 19
+
+
+
+ SYNCH FIELDS:
+
+ Sequence Number
+
+
+
+
+ Page 33
+
+
+
+ RFC-909 July 1984
+
+
+
+ The sequence number of this command. If this is not what
+ the target is expecting, the target will reset to it and
+ respond with an ERROR reply.
+
+
+
+
+ 5.4 SYNCH_REPLY
+
+ A SYNCH_REPLY is sent by the target in reponse to a valid
+ SYNCH command. A SYNCH command is valid if its sequence number
+ agrees with the sequence number the target is expecting.
+ Otherwise, the target will reset its sequence number to the SYNCH
+ command and send an ERROR reply.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 6 |
+ +---------------+---------------+
+ 1 | PROTOCOL | SYNCH_REPLY |
+ +---------------+---------------+
+ 2 | Sequence Number |
+ +---------------+---------------+
+
+
+ SYNCH_REPLY Format
+ Figure 20
+
+
+
+ SYNCH_REPLY FIELDS:
+
+ Sequence Number
+
+ The sequence number of the SYNCH command to which this
+ SYNCH_REPLY is the response.
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 34
+
+
+
+ LDP Specification Protocol Commands
+
+
+
+ 5.5 ABORT Command
+
+ The ABORT command is sent from the host to abort all pending
+ operations at the target. The target responds with ABORT_DONE.
+ This is primarily intended to stop large data transfers from the
+ target. A likely application would be during a debugging session
+ when the user types an interrupt to abort a large printout of
+ data from the target. The ABORT command has no effect on any
+ breakpoints or watchpoints that may be enabled in the target.
+
+ As a practical matter, the ABORT command may be difficult to
+ implement on some targets. Its ability to interrupt command
+ processing on the target depends on the target being able to look
+ ahead at incoming commands and receive an out-of-band signal from
+ the host. However, the effect of an ABORT may be achieved by
+ simply closing and reopening the transport connection.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 4 |
+ +---------------+---------------+
+ 1 | PROTOCOL | ABORT |
+ +---------------+---------------+
+
+
+ ABORT Command Format
+ Figure 21
+
+
+
+
+
+
+ 5.6 ABORT_DONE Reply
+
+ The ABORT_DONE reply is sent from the target to the host in
+ response to an ABORT command. This indicates that the target has
+ terminated all operations that were pending when the ABORT
+ command was received. The sequence number of the ABORT command
+ is included in the reply.
+
+
+
+
+
+
+
+
+ Page 35
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 4 |
+ +---------------+---------------+
+ 1 | PROTOCOL | ABORT_DONE |
+ +---------------+---------------+
+ 2 | Sequence Number |
+ +---------------+---------------+
+
+
+ ABORT_DONE Reply Format
+ Figure 22
+
+
+
+ ABORT_DONE FIELDS:
+
+ Sequence Number
+
+ The sequence number of the ABORT command that elicited this
+ reply. This enables the host to distinguish between
+ replies to multiple aborts.
+
+
+
+
+
+ 5.7 ERROR Reply
+
+ The ERROR reply is sent by the target in response to a bad
+ command. The ERROR reply gives the sequence number of the
+ offending command and a reason code. The target ignores further
+ commands until an ERRACK command is received. The reason for
+ ignoring commands is that the proper operation of outstanding
+ commands may be predicated on the execution of the erroneous
+ command.
+
+
+
+
+
+
+
+
+
+
+
+ Page 36
+
+
+
+ LDP Specification Protocol Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | PROTOCOL | ERROR |
+ +---------------+---------------+
+ 2 | Command Sequence Number |
+ +---------------+---------------+
+ 3 | Error code |
+ +---------------+---------------+
+ 4 | Optional Data |
+ +---------------+---------------+
+ *
+ *
+ *
+ +---------------+---------------+
+ n | Optional Data |
+ +---------------+---------------+
+
+ ERROR Reply Format
+ Figure 23
+
+
+ ERROR Reply FIELDS:
+
+ Command Sequence Number
+
+ The implicit sequence number of the erroneous command.
+
+ Error Code
+
+ A code specifying what error has taken place. The currently
+ defined codes are shown in Figure 24.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 37
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ Error Code | Symbol
+ -----------+------------------------
+ 1 BAD_COMMAND
+ 2 BAD_ADDRESS_MODE
+ 3 BAD_ADDRESS_ID
+ 4 BAD_ADDRESS_OFFSET
+ 5 BAD_CREATE_TYPE
+ 6 NO_RESOURCES
+ 7 NO_OBJECT
+ 8 OUT_OF_SYNCH
+ 9 IN_BREAKPOINT
+
+
+ ERROR Codes
+ Figure 24
+
+
+ An explanation of each of these error codes follows:
+ BAD_COMMAND
+
+ The command was not meaningful to the target machine.
+ This includes commands that are valid but unimplemented
+ in this target. Also, the command was not valid in
+ this context. For example, a command given by the host
+ that is only legal in a breakpoint (e.g. IF,
+ SET_STATE).
+
+ BAD_ADDRESS_MODE <offending-address>
+
+ The mode of an address given in the command is not
+ meaningful to this target system. For example, a
+ PROCESS address mode on a target that does not support
+ multi-processing.
+
+ BAD_ADDRESS_ID <offending-address>
+
+ The ID field of an address didn't correspond to an
+ appropriate thing. For example, for a PROCESS address
+ mode, the ID of a non-existent process.
+
+ BAD_ADDRESS_OFFSET <offending-address>
+
+ The offset field of the address was outside the legal
+ range for the thing addressed. For example, an offset
+ of 200,000 in PHYS_MACRO mode on a target with 64K of
+
+
+
+ Page 38
+
+
+
+ LDP Specification Protocol Commands
+
+
+
+ macro-memory.
+
+ BAD_CREATE_TYPE
+
+ The object type in a CREATE command was unknown.
+
+ NO_RESOURCES
+
+ A CREATE command failed due to lack of necessary
+ resources.
+
+ NO_OBJECT
+
+ A GET_OBJECT command failed to find the named object.
+
+ OUT_OF_SYNCH
+
+ The sequence number of the SYNCH command was not
+ expected by the target. The target has resynchronized
+ to it.
+
+ IN_BREAKPOINT <breakpoint-descriptor> <breakpoint-sequence#>
+ <reason-code> [<optional-info>]
+
+ An error occurred within a breakpoint command list.
+ The given 16-bit sequence-number refers to the sequence
+ number of the CREATE command that created the
+ breakpoint, while breakpoint-sequence# refers to the
+ sequence number of the command within the breakpoint
+ given by <breakpoint-descriptor>.
+
+
+
+
+ 5.8 ERRACK Acknowledgement
+
+ An ERRACK is sent by the host in response to an ERROR
+ reply from the target. The ERRACK is used to acknowledge that
+ the host has received the ERROR reply.
+
+
+
+
+
+
+
+
+
+
+
+ Page 39
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 4 |
+ +---------------+---------------+
+ 1 | PROTOCOL | ERRACK |
+ +---------------+---------------+
+
+
+ ERRACK Command Format
+ Figure 25
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 40
+
+
+
+ LDP Specification Data Transfer Commands
+
+
+
+ CHAPTER 6
+
+
+ Data Transfer Commands
+
+
+
+ Data transfer commands transfer data between the host and
+ the target. These commands are used for loading and dumping the
+ target, and examining and depositing locations on the target.
+ The READ command reads data from the target, the MOVE command
+ moves data within the target or from the target to another
+ entity, and the WRITE command writes data to the target.
+ REPEAT_DATA makes copies of a pattern to the target -- it is
+ useful for zeroing memory. WRITE_MASK writes data with a mask,
+ and is intended for modifying target parameter tables.
+
+ Data transmitted to and from the target always contains a
+ target address. In writes to the target, this is used as the
+ destination of the data. In reads from the target, the target
+ address is used by the host to identify where in the target the
+ data came from. In addition, the MOVE command may contain a
+ 'host' address as its destination; this permits the host to
+ further discriminate between possible sources of data from the
+ target -- from different breakpoints, debugging windows, etc.
+
+ A read request to the target may generate one or more
+ response messages. In particular, responses to requests for
+ large amounts of data -- core dumps, for example -- must be
+ broken up into multiple messages, if the block of data requested
+ plus the LDP header exceeds the transport layer message size.
+
+ In commands which contain data (WRITE, READ_DATA, MOVE_DATA
+ and REPEAT_DATA), if there are an odd number of data octets, then
+ a null octet is appended. This is so that the next command in
+ the message, if any, will begin on an even octet. The command
+ length is the sum of the number of octets in the command header
+ and the number of octets of data, excluding the null octet, if
+ any.
+
+ The addressing formats which may be used with data transfer
+ commands are specified for each LDP session at the start of the
+ session by the target in the HELLO_REPLY response. See the
+ section entitled 'Addressing', above, for a description of LDP
+ addressing formats and modes. In the command diagrams given
+ below, the short addressing format is illustrated. For LDP
+ sessions using long addressing, addresses are five words long,
+
+
+
+ Page 41
+
+
+
+ RFC-909 July 1984
+
+
+
+ instead of three words, as shown here. In both addressing modes,
+ descriptors are three words and offsets are two words.
+
+
+
+ 6.1 WRITE Command
+
+ The WRITE command is used to send octets of data from the
+ host to the target. This command specifies the address in the
+ target where the data is to be stored, followed by a stream of
+ data octets. If the data stream contains an odd number of
+ octets, then a null octet is appended so that the next command,
+ if any, will begin on an even octet. Since LDP must observe
+ message size limitations imposed by the underlying transport
+ layer, a single logical write may need to be broken up into
+ multiple WRITEs in separate transport messages.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER | WRITE |
+ +---------------+---------------+
+ 2 | |
+ +-- Target --+
+ 3 | Start |
+ +-- Address --+
+ 4 | |
+ +---------------+---------------+
+ 5 | Data Octet | Data Octet |
+ +---------------+---------------+
+ *
+ *
+ *
+ +---------------+---------------+
+ n | Data Octet | Data or Null |
+ +---------------+---------------+
+
+
+ WRITE Command Format
+ Figure 26
+
+
+
+
+
+
+ Page 42
+
+
+
+ LDP Specification Data Transfer Commands
+
+
+
+ WRITE FIELDS:
+
+ Command Length
+
+ The command length gives the number of octets in the
+ command, including data octets, but excluding the padding
+ octet, if any.
+
+ Target Start Address
+
+ This is the address to begin storing data in the target.
+ The length of the data to be stored may be inferred by the
+ target from the command length. An illegal address or range
+ will generate an ERROR reply.
+
+ Data Octets
+
+ Octets of data to be stored in the target. Data are packed
+ according to the packing convention described above. Ends
+ with a null octet if there are an odd number of data octets.
+
+
+
+
+
+ 6.2 READ Command
+
+ The host uses the READ command to ask the target to
+ send back a contiguous block of data. The data is specified by
+ a target starting address and a count. The target returns the
+ data in one or more READ_DATA commands, which give the starting
+ address (in the target) of each segment of returned data. When
+ the transfer is completed, the target sends a READ_DONE command
+ to the host.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 43
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 14 |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER | READ |
+ +---------------+---------------+
+ 2 | |
+ +-- Target --+
+ 3 | Start |
+ +-- Address --+
+ 4 | |
+ +---------------+---------------+
+ 5 | Address |
+ +-- Unit --+
+ 6 | Count |
+ +---------------+---------------+
+
+
+ READ Command Format
+ Figure 27
+
+
+
+ READ FIELDS:
+
+ Target Start Address
+
+ The starting address of the requested block of target data.
+ The target sends an ERROR reply if the starting address is
+ illegal, if the ending address computed from the sum of the
+ start and the count is illegal, or if holes are encountered
+ in the middle of the range.
+
+ Address Unit Count
+
+ The count of the number of target indivisibly-addressable
+ units to be transferred. For example, if the address space
+ is PHYS_MACRO, a count of two and a start address of 1000
+ selects the contents of locations 1000 and 1001. 'Count' is
+ used instead of 'length' to avoid the problem of determining
+ units the length should be denominated in (octets, words,
+ etc.). The size and type of the unit will vary depending on
+ the address space selected by the target start address. The
+ target should reply with an error (if it is able to
+
+
+
+ Page 44
+
+
+
+ LDP Specification Data Transfer Commands
+
+
+
+ determine in advance of a transfer) if the inclusive range
+ of addresses specified by the start address and the count
+ contains an illegal or nonexistent address.
+
+
+
+
+
+ 6.3 READ_DATA Response
+
+ The target uses the READ_DATA response to transmit data
+ requested by a host READ command. One or more READ_DATA
+ responses may be needed to fulfill a given READ command,
+ depending on the size of the data block requested and the
+ transport layer message size limits. Each READ_DATA response
+ gives the target starting address of its segment of data. If the
+ response contains an odd number of data octets, the target ends
+ the response with a null octet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 45
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER | READ_DATA |
+ +---------------+---------------+
+ 2 | |
+ +-- Target --+
+ 3 | Start |
+ +-- Address --+
+ 4 | |
+ +---------------+---------------+ +-+
+ 5 | Data Octet | Data Octet | |
+ +---------------+---------------+ |
+ * |
+ * | Data
+ * |
+ +---------------+---------------+ |
+ n | Data Octet | Data or Null | |
+ +---------------+---------------+ +-+
+
+
+ DATA Response Format
+ Figure 28
+
+
+
+ READ_DATA FIELDS:
+
+ Command Length
+
+ The command length gives the number of octets in the
+ command, including data octets, but excluding the padding
+ octet, if any. The host can calculate the length of the
+ data by subtracting the header length from the command
+ length. Since the target address may be either three words
+ (short format) or five words (long format), the address mode
+ must be checked to determine which is being used.
+
+ Target Start Address
+
+ This is the starting address of the data segment in this
+ message. The host may infer the length of the data from the
+ command length. The address format (short or long) is the
+
+
+
+ Page 46
+
+
+
+ LDP Specification Data Transfer Commands
+
+
+
+ same as on the initial READ command.
+
+ Data Octets
+
+ Octets of data from the target. Data are packed according
+ to the packing convention described above. Ends with a null
+ octet if there are an odd number of data octets.
+
+
+
+
+
+ 6.4 READ_DONE Reply
+
+ The target sends a READ_DONE reply to the host after it has
+ finished transferring the data requested by a READ command.
+ READ_DONE specifies the sequence number of the READ command.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 6 |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER | READ_DONE |
+ +---------------+---------------+
+ 2 | READ Sequence Number |
+ +---------------+---------------+
+
+
+ READ_DONE Reply Format
+ Figure 29
+
+
+
+ READ_DONE FIELDS:
+
+ READ Sequence Number
+
+ The sequence number of the READ command this is a reply to.
+
+
+
+
+
+
+
+
+
+
+ Page 47
+
+
+
+ RFC-909 July 1984
+
+
+
+ 6.5 MOVE Command
+
+ The MOVE command is sent by the host to move a block of data
+ from the target to a specified destination. The destination
+ address may specify a location in the target, in the host, or in
+ another target (for loading one target from another). The data
+ is specified by a target starting address and an address unit
+ count. The target sends an ERROR reply if the starting address
+ is illegal, if the ending address computed from the sum of the
+ start and the count is illegal, or if holes are encountered in
+ the middle of the range. If the MOVE destination is off-target,
+ the target moves the data in one or MOVE_DATAs. Other commands
+ arriving at the target during the transfer should be processed in
+ a timely fashion, particularly the ABORT command. When the data
+ has been moved, the target sends a MOVE_DONE to the host.
+ However, a MOVE within a breakpoint will not generate a
+ MOVE_DONE.
+
+ A MOVE with a host destination differs from a READ in that
+ it contains a host address. This field is specified by the host
+ in the MOVE command and copied by the target into the responding
+ MOVE_DATA(s). The address may be used by the host to
+ differentiate data returned from multiple MOVE requests. This
+ information may be useful in breakpoints, in multi-window
+ debugging and in communication with targets with multiple
+ processors. For example, the host sends the MOVE command to the
+ target to be executed during a breakpoint. The ID field in
+ the host address might be an index into a host breakpoint table.
+ When the breakpoint executes, the host would use the ID to
+ associate the returning MOVE_DATA with this breakpoint.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 48
+
+
+
+ LDP Specification Data Transfer Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER | MOVE |
+ +---------------+---------------+
+ 2 | |
+ +-- Source --+
+ 3 | Start |
+ +-- Address --+
+ 4 | |
+ +---------------+---------------+
+ 5 | Address |
+ +-- Unit --+
+ 6 | Count |
+ +---------------+---------------+
+ 7 | |
+ +-- Destination --+
+ 8 | Start |
+ +-- Address --+
+ 9 | |
+ +---------------+---------------+
+
+
+ MOVE Command Format
+ Figure 30
+
+
+
+ MOVE FIELDS:
+
+ Source Start Address
+
+ The starting address of the requested block of target data.
+ An illegal address type will generate an error reply.
+
+ Address Unit Count
+
+ The count of the number of target indivisibly-addressable
+ units to be transferred. For example, if the address space
+ is PHYS_MACRO, a count of two and a start address of 1000
+ selects the contents of locations 1000 and 1001. 'Count' is
+ used instead of 'length' to avoid the problem of determining
+ units the length should be denominated in (octets, words,
+
+
+
+ Page 49
+
+
+
+ RFC-909 July 1984
+
+
+
+ etc.). The size and type of the unit will vary depending on
+ the address space selected by the target start address. The
+ target should reply with an error (if it is able to
+ determine in advance of a transfer) if the inclusive range
+ of addresses specified by the start address and the count
+ contains an illegal or nonexistent address.
+
+ Destination Address
+
+ The destination of the MOVE. If the address space is on the
+ target, the address unit size should agree with that of the
+ source address space. If the address mode is HOST, the
+ values and interpretations of the remaining address fields
+ are arbitrary, and are determined by the host
+ implementation. For example, the mode argument might
+ specify a table (breakpoint, debugging window, etc.) and the
+ ID field an index into the table.
+
+
+
+
+
+
+ 6.6 MOVE_DATA Response
+
+ The target uses the MOVE_DATA responses to transmit data
+ requested by a host MOVE command. One or more MOVE_DATA
+ responses may be needed to fulfill a given MOVE command,
+ depending on the size of the data block requested and the
+ transport layer message size limits. Each MOVE_DATA response
+ gives the target starting address of its segment of data. If the
+ response contains an odd number of data octets, the target should
+ end the response with a null octet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 50
+
+
+
+ LDP Specification Data Transfer Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER | MOVE_DATA |
+ +---------------+---------------+
+ 2 | |
+ +-- Source --+
+ 3 | Start |
+ +-- Address --+
+ 4 | |
+ +---------------+---------------+
+ 5 | |
+ +-- Destination --+
+ 6 | Start |
+ +-- Address --+
+ 7 | |
+ +---------------+---------------+ +-+
+ 8 | Data Octet | Data Octet | |
+ +---------------+---------------+ |
+ * |
+ * | Data
+ * |
+ +---------------+---------------+ |
+ n | Data Octet | Data or Null | |
+ +---------------+---------------+ +-+
+
+
+ MOVE_DATA Response Format
+ Figure 31
+
+
+
+ MOVE_DATA FIELDS:
+
+ Command Length
+
+ The command length gives the number of octets in the
+ command, including data octets, but excluding the padding
+ octet, if any.
+
+ Source Start Address
+
+ This is the starting address of the data segment in this
+
+
+
+ Page 51
+
+
+
+ RFC-909 July 1984
+
+
+
+ message. The host may infer length of the data from the
+ command length.
+
+ Destination Address
+
+ The destination address copied from the MOVE command that
+ initiated this transfer. In the case of HOST MOVEs, this is
+ used by the host to identify the source of the data.
+
+ Data Octets
+
+ Octets of data from the target. Data are packed according
+ to the packing convention described above. Ends with a null
+ octet if there are an odd number of data octets.
+
+
+
+
+
+ 6.7 MOVE_DONE Reply
+
+ The target sends a MOVE_DONE reply to the host after it has
+ finished transferring the data requested by a MOVE command.
+ MOVE_DONE specifies the sequence number of the MOVE command.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 6 |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER | MOVE_DONE |
+ +---------------+---------------+
+ 2 | MOVE Sequence Number |
+ +---------------+---------------+
+
+
+ MOVE_DONE Reply Format
+ Figure 32
+
+
+
+ MOVE_DONE FIELDS:
+
+ MOVE Sequence Number
+
+ The sequence number of the MOVE command this is a reply to.
+
+
+
+ Page 52
+
+
+
+ LDP Specification Data Transfer Commands
+
+
+
+ 6.8 REPEAT_DATA
+
+ The REPEAT_DATA command is sent by the host to write copies
+ of a specified pattern into the target. This provides an
+ efficient way of zeroing target memory and initializing target
+ data structures. The command specifies the target starting
+ address, the number of copies of the pattern to be made, and a
+ stream of octets that constitutes the pattern.
+
+ This command differs from the other data transfer commands
+ in that the effect of a REPEAT_DATA with a large pattern cannot
+ be duplicated by sending the data in smaller chunks over several
+ commands. Therefore, the maximum size of a pattern that can be
+ copied with REPEAT_DATA will depend on the message size limits of
+ the transport layer.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER | REPEAT_DATA |
+ +---------------+---------------+
+ 2 | |
+ +-- Target --+
+ 3 | Start |
+ +-- Address --+
+ 4 | |
+ +---------------+---------------+
+ 6 | Repeat Count |
+ +---------------+---------------+ +-+
+ 7 | Data Octet | Data Octet | |
+ +---------------+---------------+ |
+ * |
+ * | Pattern
+ * |
+ +---------------+---------------+ |
+ n | Data Octet | Data or Null | |
+ +---------------+---------------+ +-+
+
+
+ REPEAT_DATA Command Format
+ Figure 33
+
+
+
+
+
+ Page 53
+
+
+
+ RFC-909 July 1984
+
+
+
+ REPEAT_DATA FIELDS:
+
+ Command Length
+
+ The command length gives the number of octets in the
+ command, including data octets in the pattern, but excluding
+ the padding octet, if any.
+
+ Target Start Address
+
+ This is the starting address where the first copy of the
+ pattern should be written in the target. Successive copies
+ of the pattern are made contiguously starting at this
+ address.
+
+ Repeat Count
+
+ The repeat count specifies the number of copies of the
+ pattern that should be made in the target. The repeat count
+ should be greater than zero.
+
+ Pattern
+
+ The pattern to be copied into the target, packed into a
+ stream of octets. Data are packed according to the packing
+ convention described above. Ends with a null octet if there
+ are an odd number of data octets.
+
+
+
+
+
+ 6.9 WRITE_MASK Command (Optional)
+
+ The host sends a WRITE_MASK command to the target to write
+ one or more masked values. The command uses an address to
+ specify a target base location, followed by one or more offset-
+ mask-value triplets. Each triplet gives an offset from the base,
+ a value, and a mask indicating which bits in the location at the
+ offset are to be changed.
+
+ This optional command is intended for use in controlling the
+ target by changing locations in a table. For example, it may be
+ used to change entries in a target parameter table. The
+ operation of modifying a specified location with a masked value
+ is intended to be atomic. In other words, another target process
+ should not be able to access the location to be modified between
+
+
+
+ Page 54
+
+
+
+ LDP Specification Data Transfer Commands
+
+
+
+ the start and the end of the modification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 55
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER | WRITE_MASK |
+ +---------------+---------------+
+ 2 | |
+ +-- Target --+
+ 3 | Base |
+ +-- Address --+
+ 4 | |
+ +---------------+---------------+ +-+
+ 5 | | |
+ +-- Offset --+ |
+ 6 | | |
+ +---------------+---------------+ | Offset-Mask-Value
+ 7 | | | Triplet
+ +-- Mask --+ |
+ 8 | | |
+ +---------------+---------------+ |
+ 9 | | |
+ +-- Value --+ |
+ 10| | |
+ +---------------+---------------+ +-+
+ *
+ *
+ *
+ +---------------+---------------+ +-+
+ | | |
+ +-- Offset --+ |
+ | | |
+ +---------------+---------------+ | Offset-Mask-Value
+ | | | Triplet
+ +-- Mask --+ |
+ | | |
+ +---------------+---------------+ |
+ | | |
+ +-- Value --+ |
+ | | |
+ +---------------+---------------+ +-+
+
+
+ WRITE_MASK Format
+ Figure 34
+
+
+
+ Page 56
+
+
+
+ LDP Specification Data Transfer Commands
+
+
+
+ WRITE_MASK FIELDS:
+
+ Command Length
+
+ The command length gives the number of octets in the
+ command. The number of offset-value pairs may be calculated
+ from this, since the command header is either 10 or 12
+ octets long (short or long address format), and each
+ offset-mask-value triplet is 12 octets long.
+
+ Target Base Address
+
+ Specifies the target location to which the offset is added
+ to yield the location to be modified.
+
+ Offset
+
+ An offset to be added to the base to select a location to be
+ modified.
+ Mask
+
+ Specifies which bits in the value are to be copied into the
+ location.
+ Value
+
+ A value to be stored at the specified offset from the base.
+ The set bits in the mask determine which bits in the value
+ are applied to the location. The following algorithm will
+ achieve the intended result: take the one's complement of
+ the mask and AND it with the location, leaving the result in
+ the location. Then AND the mask and the value, and OR the
+ result into the location.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 57
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 58
+
+
+
+ LDP Specification Control Commands
+
+
+
+ CHAPTER 7
+
+
+ Control Commands
+
+
+
+ Control commands are used to control the execution of target
+ code, breakpoints and watchpoints. They are also used to read
+ and report the state of these objects. The object to be
+ controlled or reported on is specified with a descriptor. Valid
+ descriptor modes include PHYS_* (for some commands) PROCESS_CODE,
+ BREAKPOINT and WATCHPOINT. Control commands which change the
+ state of the target are START, STOP, CONTINUE and STEP. REPORT
+ requests a STATUS report on a target object. EXCEPTION is a
+ spontaneous report on an object, used to report asynchronous
+ events such as hardware traps. The host may verify the action of
+ a START, STOP, STEP or CONTINUE command by following it with a
+ REPORT command.
+
+
+
+
+ 7.1 START Command
+
+ The START command is sent by the host to start execution of
+ a specified object in the target. For targets which support
+ multiple processes, a PROCESS_CODE address specifies the process
+ to be started. Otherwise, one of the PHYS_* modes may specify
+ a location in macro-memory where execution is to continue.
+ Applied to a breakpoint or watchpoint, START sets the value of
+ the object's state variable, and activates the breakpoint. The
+ breakpoint counter and pointer variables are initialized to zero.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 59
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 14 |
+ +---------------+---------------+
+ 1 | CONTROL | START |
+ +---------------+---------------+ +-+
+ 2 | Mode | 0 | |
+ +---------------+---------------+ |
+ 3 | | |
+ +-- ID --+ |
+ 4 | Field | | Address
+ +-------------------------------+ |
+ 5 | | |
+ +-- Offset --+ |
+ 6 | | |
+ +-------------------------------+ +-+
+
+
+ START Command Format
+ Figure 35
+
+
+
+ START FIELDS:
+
+ Address
+
+ The descriptor specifies the object to be started. If the
+ mode is PROCESS_CODE, ID specifies the process to be
+ started, and offset gives the process virtual address to
+ start at. If the mode is PHYS_*, execution of the target is
+ continued at the specified address.
+
+ For modes of BREAKPOINT and WATCHPOINT, the offset specifies
+ the new value of the FSM state variable. This is for FSM
+ breakpoints and watchpoints.
+
+
+
+
+
+
+
+
+
+
+
+ Page 60
+
+
+
+ LDP Specification Control Commands
+
+
+
+ 7.2 STOP Command
+
+ The STOP command is sent by the host to stop execution of a
+ specified object in the target. A descriptor specifies the
+ object. Applied to a breakpoint or watchpoint, STOP deactivates
+ it. The breakpoint/watchpoint may be re-activated by issuing a
+ START or a CONTINUE command for it.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 10 |
+ +---------------+---------------+
+ 1 | CONTROL | STOP |
+ +---------------+---------------+ +-+
+ 2 | Mode | 0 | |
+ +---------------+---------------+ |
+ 3 | | | Descriptor
+ +-- ID --+ |
+ 4 | Field | |
+ +-------------------------------+ +-+
+
+
+ STOP Command Format
+ Figure 36
+
+
+
+ STOP FIELDS:
+
+ Descriptor
+
+ The descriptor specifies the object to be stopped or
+ disarmed. If the mode is PROCESS_CODE, the ID specifies the
+ process to be stopped.
+
+ For modes of BREAKPOINT and WATCHPOINT, the specified
+ breakpoint or watchpoint is deactivated. It may be re-
+ activated by a CONTINUE or START command.
+
+
+
+
+
+
+
+
+
+
+ Page 61
+
+
+
+ RFC-909 July 1984
+
+
+
+ 7.3 CONTINUE Command
+
+ The CONTINUE command is sent by the host to resume execution
+ of a specified object in the target. A descriptor specifies the
+ object. Applied to a breakpoint or watchpoint, CONTINUE activates
+ it.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 10 |
+ +---------------+---------------+
+ 1 | CONTROL | CONTINUE |
+ +---------------+---------------+ +-+
+ 2 | Mode | 0 | |
+ +---------------+---------------+ |
+ 3 | | | Descriptor
+ +-- ID --+ |
+ 4 | Field | |
+ +-------------------------------+ +-+
+
+
+ CONTINUE Command Format
+ Figure 37
+
+
+
+ CONTINUE FIELDS:
+
+ Descriptor
+
+ The descriptor specifies the object to be resumed or armed.
+ If the mode is PROCESS_CODE, the ID specifies the process to
+ be resumed.
+
+ For modes of BREAKPOINT and WATCHPOINT, the specified
+ breakpoint or watchpoint is armed.
+
+
+
+ 7.4 STEP Command
+
+ The STEP command is sent by the host to the target. It
+ requests the execution of one instruction (or appropriate
+ operation) in the object specified by the descriptor.
+
+
+
+
+ Page 62
+
+
+
+ LDP Specification Control Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 10 |
+ +---------------+---------------+
+ 1 | CONTROL | STEP |
+ +---------------+---------------+ +-+
+ 2 | Mode | 0 | |
+ +---------------+---------------+ |
+ 3 | | | Descriptor
+ +-- ID --+ |
+ 4 | Field | |
+ +-------------------------------+ +-+
+
+
+ STEP Command Format
+ Figure 38
+
+
+ STEP FIELDS:
+
+ Descriptor
+
+ The descriptor specifies the object to be stepped. If the
+ mode is PROCESS_CODE, the ID specifies a process.
+
+
+
+ 7.5 REPORT Command
+
+ The REPORT command is sent by the host to request a status
+ report on a specified target object. The status is returned in a
+ STATUS reply.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 63
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 10 |
+ +---------------+---------------+
+ 1 | CONTROL | REPORT |
+ +---------------+---------------+ +-+
+ 2 | Mode | 0 | |
+ +---------------+---------------+ |
+ 3 | | | Descriptor
+ +-- ID --+ |
+ 4 | Field | |
+ +-------------------------------+ +-+
+
+
+ REPORT Command Format
+ Figure 39
+
+
+ REPORT FIELDS:
+
+ Descriptor
+
+ The descriptor specifies the object for which a STATUS
+ report is requested. For a mode of PROCESS_CODE, the ID
+ specifies a process. Other valid modes are PHYS_MACRO, to
+ query the status of the target application, and BREAKPOINT
+ and WATCHPOINT, to get the status of a breakpoint or
+ watchpoint.
+
+
+
+ 7.6 STATUS Reply
+
+ The target sends a STATUS reply in response to a REPORT
+ command from the host. STATUS gives the state of a specified
+ object. For example, it may tell whether a particular target
+ process is running or stopped.
+
+
+
+
+
+
+
+
+
+
+ Page 64
+
+
+
+ LDP Specification Control Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | CONTROL | STATUS |
+ +---------------+---------------+ +-+
+ 2 | Mode | 0 | |
+ +---------------+---------------+ |
+ 3 | | | Descriptor
+ +-- ID --+ |
+ 4 | Field | |
+ +-------------------------------+ +-+
+ 5 | Status |
+ +-------------------------------+ +-+
+ * |
+ * |
+ * | Other Data
+ +-------------------------------+ |
+ n | Other Data | |
+ +-------------------------------+ +-+
+
+
+ STATUS Reply Format
+ Figure 40
+
+
+ STATUS FIELDS:
+
+ Descriptor
+
+ The descriptor specifies the object whose status is being
+ given. If the mode is PROCESS_CODE, then the ID specifies a
+ process. If the mode is PHYS_MACRO, then the status is that
+ of the target application.
+
+ Status
+
+ The status code describes the status of the object. Status
+ codes are 0=STOPPED and 1=RUNNING. For breakpoints and
+ watchpoints, STOPPED means disarmed and RUNNING means armed.
+
+ Other Data
+
+ For breakpoints and watchpoints, Other Data consists of a
+
+
+
+ Page 65
+
+
+
+ RFC-909 July 1984
+
+
+
+ 16-bit word giving the current value of the FSM state
+ variable.
+
+
+
+
+ 7.7 EXCEPTION Trap
+
+ An EXCEPTION is a spontaneous message sent from the target
+ indicating a target-machine exception associated with a
+ particular object. The object is specified by an address.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | CONTROL | EXCEPTION |
+ +---------------+---------------+ +-+
+ 2 | Mode | 0 | |
+ +---------------+---------------+ |
+ 3 | | |
+ +-- ID --+ |
+ 4 | Field | | Address
+ +-------------------------------+ |
+ 5 | | |
+ +-- Offset --+ |
+ 6 | | |
+ +-------------------------------+ +-+
+ 7 | Type |
+ +-------------------------------+ +-+
+ * |
+ * |
+ * | Other Data
+ +-------------------------------+ |
+ n | Other Data | |
+ +-------------------------------+ +-+
+
+
+ EXCEPTION Format
+ Figure 41
+
+
+ EXCEPTION FIELDS:
+
+ Address
+
+
+
+ Page 66
+
+
+
+ LDP Specification Control Commands
+
+
+
+ The address specifies the object the exception is for.
+
+ Type
+
+ The type of exception. Values are target-dependent.
+
+ Other Data
+
+ Values are target-dependent.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 67
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 68
+
+
+
+ LDP Specification Management Commands
+
+
+
+ CHAPTER 8
+
+
+ Management Commands
+
+
+
+ Management commands are used to control resources in the
+ target machine. There are two kinds of commands: those that
+ interrogate the remote machine about resources, and those that
+ allocate and free resources. There are management commands to
+ create, list and delete breakpoints. All commands have
+ corresponding replies which include the sequence number of the
+ request command. Failing requests produce ERROR replies.
+
+ There are two resource allocation commands, CREATE and
+ DELETE, which create and delete objects in the remote machine.
+ There are a number of listing commands for listing a variety of
+ target objects -- breakpoints, watchpoints, processes, and names.
+ The amount of data returned by listing commands may vary in
+ length, depending on the state of the target. If a list is too
+ large to fit in a single message, the target will send it in
+ several list replies. A flag in each reply specifies whether
+ more messages are to follow.
+
+
+
+
+ 8.1 CREATE Command
+
+ The CREATE command is sent from the host to the target to
+ create a target object. If the CREATE is successful, the target
+ returns a CREATE_DONE reply, which contains a descriptor
+ associated with the CREATEd object. The types of objects that
+ may be specified in a CREATE include breakpoints, processes,
+ memory objects and descriptors. All are optional except for
+ breakpoints.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 69
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | MANAGEMENT | CREATE |
+ +---------------+---------------+
+ 2 | Create Type |
+ +---------------+---------------+ +-+
+ * |
+ * | Create
+ * | Arguments
+ +---------------+---------------+ |
+ n | Create Arguments | |
+ +---------------+---------------+ +-+
+
+
+ CREATE Command Format
+ Figure 42
+
+
+
+ CREATE FIELDS:
+
+ Create Type
+
+ The type of object to be created. Arguments vary with the
+ type. Currently defined types are shown in Figure 43. All
+ are optional except for BREAKPOINT.
+
+
+ Create Type | Symbol
+ -------------+----------------
+
+ 0 BREAKPOINT
+ 1 WATCHPOINT
+ 2 PROCESS
+ 3 MEMORY_OBJECT
+ 4 DESCRIPTOR
+
+
+ Create Types
+ Figure 43
+
+
+
+
+
+ Page 70
+
+
+
+ LDP Specification Management Commands
+
+
+
+ Create Arguments
+
+ Create arguments depend on the type of object being created.
+ The formats for each type of object are described below.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 22 |
+ +---------------+---------------+
+ 1 | MANAGEMENT | CREATE |
+ +---------------+---------------+
+ 2 | BREAKPOINT |
+ +---------------+---------------+ +-+
+ 3 | Mode | Mode Argument | |
+ +---------------+---------------+ |
+ 4 | | |
+ +-- ID --+ | Create
+ 5 | Field | | BREAKPOINT
+ +-------------------------------+ | Arguments
+ 6 | | |
+ +-- Offset --+ |
+ 7 | | |
+ +-------------------------------+ |
+ 8 | Maximum States | |
+ +---------------+---------------+ |
+ 9 | Maximum Size | |
+ +---------------+---------------+ |
+ 10| Maximum Local Variables | |
+ +---------------+---------------+ +-+
+
+
+ CREATE BREAKPOINT Format
+ Figure 44
+
+
+
+ BREAKPOINT and WATCHPOINT
+
+ The format is the same for CREATE BREAKPOINT and CREATE
+ WATCHPOINT. In the following discussion, 'breakpoint' may
+ be taken to mean either breakpoint or watchpoint.
+
+ The address is the location where the breakpoint is to be
+ set. In the case of watchpoints it is the location to be
+
+
+
+ Page 71
+
+
+
+ RFC-909 July 1984
+
+
+
+ watched. Valid modes are any PHYS_* mode that addresses
+ macro-memory, PROCESS_CODE for breakpoints and PROCESS_DATA
+ for watchpoints.
+
+ 'Maximum states' is the number of states the finite state
+ machine for this breakpoint will have. A value of zero
+ indicates a default breakpoint, for targets which do not
+ implement finite state machine (FSM) breakpoints. A default
+ breakpoint is the same as an FSM with one state consisting
+ of a STOP and a REPORT command for the process containing
+ the breakpoint.
+
+ 'Maximum size' is the total size, in octets, of the
+ breakpoint data to be sent via subsequent BREAKPOINT_DATA
+ commands. This is the size of the data only, and does not
+ include the LDP command headers and breakpoint descriptors.
+
+ 'Maximum local variables' is the number of 32-bit longs to
+ reserve for local variables for this breakpoint. Normally
+ this value will be zero.
+
+ PROCESS
+
+ Creates a new process. Arguments are target-dependent.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 72
+
+
+
+ LDP Specification Management Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | MANAGEMENT | CREATE |
+ +---------------+---------------+
+ 2 | MEMORY_OBJECT |
+ +---------------+---------------+
+ 3 | Object Size |
+ +---------------+---------------+
+ 4 | Name Size |
+ +-------------------------------+ +-+
+ 5 | Name char | Name char | |
+ +-------------------------------+ |
+ * | Object
+ * | Name
+ * |
+ +---------------+---------------+ |
+ n | 0 or Name char| 0 | |
+ +---------------+---------------+ +-+
+
+
+ CREATE MEMORY_OBJECT Format
+ Figure 45
+
+
+
+
+ MEMORY_OBJECT
+
+ Creates an object of size Object Size, with the given name.
+ Object Size is in target dependent units. The name may be
+ the null string for unnamed objects. Name Size gives the
+ number of characters in Object Name, and must be even.
+ Always ends with a null octect.
+
+ DESCRIPTOR
+
+ Used for obtaining descriptors from IDs on target systems
+ where IDs are longer than 32 bits. There is a single
+ argument, Long ID, whose length is target dependent.
+
+
+
+
+
+
+ Page 73
+
+
+
+ RFC-909 July 1984
+
+
+
+ 8.2 CREATE_DONE Reply
+
+ The target sends a CREATE_DONE reply to the host in response
+ to a successful CREATE command. The reply contains the sequence
+ number of the CREATE request, and a descriptor for the object
+ created. This descriptor is used by the host to specify the
+ object in subsequent commands referring to it. Commands which
+ refer to created objects include LIST_* commands, DELETE and
+ BREAKPOINT_DATA. For example, to delete a CREATEd object, the
+ host sends a DELETE command that specifies the descriptor
+ returned by the CREATE_DONE reply.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 12 |
+ +---------------+---------------+
+ 1 | MANAGEMENT | CREATE_DONE |
+ +---------------+---------------+
+ 2 | Create Sequence Number |
+ +---------------+---------------+ +-+
+ 3 | Mode | Mode Argmuent | |
+ +---------------+---------------+ | Created
+ 4 | | | Object
+ +-- ID --+ | Descriptor
+ 5 | Field | |
+ +---------------+---------------+ +-+
+
+
+ CREATE_DONE Reply Format
+ Figure 46
+
+
+
+ CREATE_DONE FIELDS:
+
+ Create Sequence Number
+
+ The sequence number of the CREATE command to which this is
+ the reply.
+
+ Created Object Descriptor
+
+ A descriptor assigned by the target to the created object.
+ The contents of the descriptor fields are arbitrarily
+
+
+
+ Page 74
+
+
+
+ LDP Specification Management Commands
+
+
+
+ assigned by the target at its convenience. The host treats
+ the descriptor as a unitary object, used for referring to
+ the created object in subsequent commands.
+
+
+
+
+ 8.3 DELETE Command
+
+ The host sends a DELETE command to remove an object created
+ by an earlier CREATE command. The object to be deleted is
+ specified with a descriptor. The descriptor is from the
+ CREATE_DONE reply to the original CREATE command.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 10 |
+ +---------------+---------------+
+ 1 | MANAGEMENT | DELETE |
+ +---------------+---------------+ +-+
+ 2 | Mode | Mode Argument | |
+ +---------------+---------------+ |
+ 3 | | | Created
+ +-- ID --+ | Object
+ 4 | Field | | Descriptor
+ +---------------+---------------+ +-+
+
+
+ DELETE Command Format
+ Figure 47
+
+
+
+ DELETE FIELDS:
+
+ Created Object Descriptor
+
+ Specifies the object to be deleted. This is the descriptor
+ that was returned by the target in the CREATE_DONE reply to
+ the original CREATE command.
+
+
+
+
+
+
+
+ Page 75
+
+
+
+ RFC-909 July 1984
+
+
+
+ 8.4 DELETE_DONE Reply
+
+ The target sends a DELETE_DONE reply to the host in response
+ to a successful DELETE command. The reply contains the sequence
+ number of the DELETE request.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 6 |
+ +---------------+---------------+
+ 1 | MANAGEMENT | DELETE_DONE |
+ +---------------+---------------+
+ 2 | Delete Sequence Number |
+ +---------------+---------------+
+
+
+ DELETE_DONE Reply Format
+ Figure 48
+
+
+
+ DELETE_DONE FIELDS:
+
+ Request Sequence Number
+
+ The sequence number of the DELETE command to which this is
+ the reply.
+
+
+
+
+
+ 8.5 LIST_ADDRESSES Command
+
+ The host sends a LIST_ADDRESSES command to request a list of
+ valid address ranges for a specified object. The object is given
+ by a descriptor. Typical objects are a target process, or the
+ target physical machine. The target responds with an
+ ADDRESS_LIST reply. This command is used for obtaining the size
+ of dynamic address spaces and for determining dump ranges.
+
+
+
+
+
+
+
+ Page 76
+
+
+
+ LDP Specification Management Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 10 |
+ +---------------+---------------+
+ 1 | MANAGEMENT | LIST_ADDRESSES|
+ +---------------+---------------+ +-+
+ 2 | Mode | Mode Argument | |
+ +---------------+---------------+ | Object
+ 3 | | | Descriptor
+ +-- ID --+ |
+ 4 | Field | |
+ +---------------+---------------+ +-+
+
+
+ LIST_ADDRESSES Command Format
+ Figure 49
+
+
+
+ LIST_ADDRESSES FIELDS:
+
+ Object Descriptor
+
+ Specifies the object whose address ranges are to be listed.
+ Valid modes include PHYS_MACRO, PHYS_MICRO, PROCESS_CODE,
+ and PROCESS_DATA.
+
+
+
+
+
+
+ 8.6 ADDRESS_LIST Reply
+
+ The target sends an ADDRESS_LIST reply to the host in
+ response to a successful LIST_ADDRESSES command. The reply
+ contains the sequence number of the LIST_ADDRESSES request, the
+ descriptor of the object being listed, and a list of the valid
+ address ranges within the object.
+
+
+
+
+
+
+
+
+ Page 77
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | MANAGEMENT | ADDRESS_LIST |
+ +---------------+---------------+
+ 2 | List Sequence Number |
+ +---------------+---------------+
+ 3 | Flags |M| Item Count |
+ +---------------+---------------+
+ 4 | |
+ +-- --+
+ 5 | Descriptor |
+ +-- --+
+ 6 | |
+ +---------------+---------------+ +-+
+ 7 | | |
+ +-- First Address --+ | First
+ 8 | | | Address
+ +-------------------------------+ | Range
+ 9 | | |
+ +-- Last Address --+ |
+ 10| | |
+ +-------------------------------+ +-+
+ *
+ *
+ *
+ +---------------+---------------+ +-+
+ | | |
+ +-- First Address --+ | Last
+ | | | Address
+ +-------------------------------+ | Range
+ | | |
+ +-- Last Address --+ |
+ | | |
+ +-------------------------------+ +-+
+
+
+ ADDRESS_LIST Reply Format
+ Figure 50
+
+
+
+
+
+
+
+ Page 78
+
+
+
+ LDP Specification Management Commands
+
+
+
+ ADDRESS_LIST FIELDS:
+
+ List Sequence Number
+
+ The sequence number of the LIST_ADDRESSES command to which
+ this is the reply.
+
+ Flags
+
+ If M=1, the address list is continued in one or more
+ subsequent ADDRESS_LIST replies. If M=0, this is the final
+ ADDRESS_LIST.
+
+ Item Count
+
+ The number of address ranges described in this command.
+
+ Descriptor
+
+ The descriptor of the object being listed.
+
+ Address Range
+
+ Each address range is composed of a pair of 32-bit addresses
+ which give the first and last addresses of the range. If
+ there are 'holes' in the address space of the object, then
+ multiple address ranges will be used to describe the valid
+ address space.
+
+
+
+
+
+
+ 8.7 LIST_BREAKPOINTS Command
+
+ The host sends a LIST_BREAKPOINTS command to request a list
+ of all breakpoints associated with the current connection. The
+ target replies with BREAKPOINT_LIST.
+
+
+
+
+
+
+
+
+
+
+
+ Page 79
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 4 |
+ +---------------+---------------+
+ 1 | MANAGEMENT |LIST_BREAKPOINTS
+ +---------------+---------------+
+
+
+ LIST_BREAKPOINTS Command Format
+ Figure 51
+
+
+
+
+
+
+
+ 8.8 BREAKPOINT_LIST Reply
+
+ The target sends a BREAKPOINT_LIST reply to the host in
+ response to a LIST_BREAKPOINTS command. The reply contains the
+ sequence number of the LIST_BREAKPOINTS request, and a list of
+ all breakpoints associated with the current connection. The
+ descriptor and address of each breakpoint are listed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 80
+
+
+
+ LDP Specification Management Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | MANAGEMENT |BREAKPOINT_LIST|
+ +---------------+---------------+
+ 2 | List Sequence Number |
+ +---------------+---------------+
+ 3 | Flags |M| Item Count |
+ +---------------+---------------+ +-+
+ 4 | Mode | 0 | |
+ +---------------+---------------+ |
+ 5 | | | Breakpoint
+ +-- ID --+ | Descriptor
+ 6 | Field | |
+ +---------------+---------------+ +-+
+ 7 | Mode | Mode Argument | |
+ +---------------+---------------+ |
+ 8 | | |
+ +-- ID --+ | Breakpoint
+ 9 | Field | | Address
+ +-------------------------------+ |
+ 10| | |
+ +-- Offset --+ |
+ 11| | |
+ +-------------------------------+ +-+
+ * | Additional
+ * | Descriptor-Address
+ * | Pairs
+ +-+
+
+
+ BREAKPOINT_LIST Reply Format
+ Figure 52
+
+
+ BREAKPOINT_LIST FIELDS:
+
+ List Sequence Number
+
+ The sequence number of the LIST_BREAKPOINTS command to which
+ this is the reply.
+
+ Flags
+
+
+
+ Page 81
+
+
+
+ RFC-909 July 1984
+
+
+
+ If M=1, the breakpoint list is continued in one or more
+ subsequent BREAKPOINT_LIST replies. If M=0, this is the
+ final BREAKPOINT_LIST.
+
+ Item Count
+
+ The number of breakpoints described in this list.
+
+ Breakpoint Descriptor
+
+ A descriptor assigned by the target to this breakpoint.
+ Used by the host to specify this breakpoint in
+ BREAKPOINT_DATA and DELETE commands.
+
+ Breakpoint Address
+
+ The address at which this breakpoint is set.
+
+
+
+
+
+
+ 8.9 LIST_PROCESSES Command
+
+ The host sends a LIST_PROCESSES command to request a list of
+ descriptors for all processes on the target. The target replies
+ with PROCESS_LIST.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 4 |
+ +---------------+---------------+
+ 1 | MANAGEMENT |LIST_PROCESSES |
+ +---------------+---------------+
+
+
+ LIST_PROCESSES Command Format
+ Figure 53
+
+
+
+
+
+
+
+
+
+ Page 82
+
+
+
+ LDP Specification Management Commands
+
+
+
+ 8.10 PROCESS_LIST Reply
+
+ The target sends a PROCESS_LIST reply to the host in
+ response to a LIST_PROCESSES command. The reply contains the
+ sequence number of the LIST_PROCESSES request, and a list of all
+ processes in the target. For each process, a descriptor and a
+ target-dependent amount of process data are given.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | MANAGEMENT | PROCESS_LIST |
+ +---------------+---------------+
+ 2 | List Sequence Number |
+ +---------------+---------------+
+ 3 | Flags |M| Item Count |
+ +---------------+---------------+ +-+
+ 4 | PROCESS_CODE | 0 | |
+ +---------------+---------------+ |
+ 5 | | | Process
+ +-- ID --+ | Descriptor
+ 6 | Field | |
+ +---------------+---------------+ +-+
+ 7 | Process data count | |
+ +---------------+---------------+ |
+ 8 | Process data | Process data | |
+ +-------------------------------+ | Process
+ * | Data
+ * |
+ * |
+ +---------------+---------------+ |
+ n | Process data | Process data | |
+ +-------------------------------+ +-+
+ * | Additional
+ * | Descriptor-Data
+ * | Pairs
+ +-+
+
+
+ PROCESS_LIST Reply Format
+ Figure 54
+
+
+
+
+
+ Page 83
+
+
+
+ RFC-909 July 1984
+
+
+
+ PROCESS_LIST FIELDS:
+
+ List Sequence Number
+
+ The sequence number of the LIST_PROCESSES command to which
+ this is the reply.
+
+ Flags
+
+ If M=1, the process list is continued in one or more
+ subsequent PROCESS_LIST replies. If M=0, this is the final
+ PROCESS_LIST.
+
+ Item Count
+
+ The number of processes described in this list. For each
+ process there is a descriptor and a variable number of
+ octets of process data.
+
+ Process Descriptor
+
+ A descriptor assigned by the target to this process. Used
+ by the host to specify this PROCESS in a DELETE command.
+
+ Process Data Count
+
+ Number of octets of process data for this process. Must be
+ even.
+
+ Process Data
+
+ Target-dependent information about this process. Number of
+ octets is given by the process data count.
+
+
+
+
+
+
+ 8.11 LIST_NAMES Command
+
+ The host sends a LIST_NAMES command to request a list of
+ available names as strings. The target replies with NAME_LIST.
+
+
+
+
+
+
+
+ Page 84
+
+
+
+ LDP Specification Management Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 4 |
+ +---------------+---------------+
+ 1 | MANAGEMENT | LIST_NAMES |
+ +---------------+---------------+
+
+
+ LIST_NAMES Command Format
+ Figure 55
+
+
+
+
+
+
+
+ 8.12 NAME_LIST Reply
+
+ The target sends a NAME_LIST reply to the host in response
+ to a LIST_NAMES command. The reply contains the sequence number
+ of the LIST_NAMES request, and a list of all target names, as
+ strings.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 85
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | MANAGEMENT | NAME_LIST |
+ +---------------+---------------+
+ 2 | List Sequence Number |
+ +---------------+---------------+
+ 3 | Flags |M| Item Count |
+ +---------------+---------------+ +-+
+ 4 | Name Size | |
+ +---------------+---------------+ |
+ 5 | Name Char | Name Char | | Name
+ +---------------+---------------+ | String
+ * |
+ * |
+ * |
+ +---------------+---------------+ |
+ n | 0 or Name Char| 0 | |
+ +---------------+---------------+ +-+
+ * | Additional
+ * | Name
+ * | Strings
+ +-+
+
+
+ NAME_LIST Reply Format
+ Figure 56
+
+
+
+ NAME_LIST FIELDS:
+
+ List Sequence Number
+
+ The sequence number of the LIST_NAMES command to which this
+ is the reply.
+
+
+
+
+
+
+
+
+
+
+ Page 86
+
+
+
+ LDP Specification Management Commands
+
+
+
+ Flags
+
+ If M=1, the name list is continued in one or more subsequent
+ NAME_LIST replies. If M=0, this is the final NAME_LIST.
+
+ Item Count
+
+ The number of name strings in this list. Each name string
+ consists of a character count and a null-terminated string
+ of characters.
+
+ Name Size
+
+ The number of octets in this name string. Must be even.
+
+ Name Characters
+
+ A string of octets composing the name. Ends with a null
+ octet. The number of characters must be even, so if the
+ terminating null comes on an odd octet, another null is
+ appended.
+
+
+
+
+
+
+ 8.13 GET_PHYS_ADDR Command
+
+ The host sends a GET_PHYS_ADDR command to convert an address
+ into physical form. The target returns the physical address in a
+ GOT_PHYS_ADDR reply. For example, the host could send a
+ GET_PHYS_ADDR command containing a register-offset address, and
+ the target would return the physical address derived from this in
+ a GOT_PHYS_ADDR reply.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 87
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 14 |
+ +---------------+---------------+
+ 1 | MANAGEMENT | GET_PHYS_ADDR |
+ +---------------+---------------+ +-+
+ 2 | Mode | Mode Argument | |
+ +---------------+---------------+ |
+ 3 | ID | |
+ +-- Field --+ |
+ 4 | | | Address
+ +---------------+---------------+ |
+ 5 | | |
+ +-- Offset --+ |
+ 6 | | |
+ +---------------+---------------+ +-+
+
+
+ GET_PHYS_ADDR Command Format
+ Figure 57
+
+
+
+ GET_PHYS_ADDR FIELDS:
+
+ Address
+
+ The address to be converted to a physical address. The mode
+ may be one of PHYS_REG_OFFSET, PHYS_REG_INDIRECT,
+ PHYS_MACRO_PTR, any OBJECT_* mode, and any PROCESS_* mode
+ except for PROCESS_REG.
+
+
+
+
+
+
+ 8.14 GOT_PHYS_ADDR Reply
+
+ The target sends a GOT_PHYS_ADDR reply to the host in
+ response to a successful GET_PHYS_ADDR command. The reply
+ contains the sequence number of the GET_PHYS_ADDR request, and
+ the specified address converted into a physical address.
+
+
+
+
+ Page 88
+
+
+
+ LDP Specification Management Commands
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 16 |
+ +---------------+---------------+
+ 1 | MANAGEMENT | GOT_PHYS_ADDR |
+ +---------------+---------------+
+ 2 | Get Sequence Number |
+ +---------------+---------------+ +-+
+ 3 | PHYS_MACRO | 0 | |
+ +---------------+---------------+ |
+ 4 | | |
+ +-- 0 --+ |
+ 5 | | | Address
+ +---------------+---------------+ |
+ 6 | | |
+ +-- Offset --+ |
+ 7 | | |
+ +---------------+---------------+ +-+
+
+
+ GOT_PHYS_ADDR Reply Format
+ Figure 58
+
+
+
+ GOT_PHYS_ADDR FIELDS:
+
+ Get Sequence Number
+
+ The sequence number of the GET_PHYS_ADDR command to which
+ this is the reply.
+
+ Address
+
+ The address resulting from translating the address given in
+ the GET_PHYS_ADDR command into a physical address. Mode is
+ always PHYS_MACRO and ID and mode argument are always zero.
+ Offset gives the 32-bit physical address.
+
+
+
+
+
+
+
+
+
+
+ Page 89
+
+
+
+ RFC-909 July 1984
+
+
+
+ 8.15 GET_OBJECT Command
+
+ The host sends a GET_OBJECT command to convert a name string
+ into a descriptor. The target returns the descriptor in a
+ GOT_OBJECT reply. Intended for use in finding control parameter
+ objects.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | MANAGEMENT | GET_OBJECT |
+ +---------------+---------------+ +-+
+ 2 | Name Size | |
+ +---------------+---------------+ |
+ 3 | Name Char | Name Char | | Name
+ +---------------+---------------+ | String
+ * |
+ * |
+ * |
+ +---------------+---------------+ |
+ n | 0 or Name Char| 0 | |
+ +---------------+---------------+ +-+
+
+
+ GET_OBJECT Command Format
+ Figure 59
+
+
+
+ GET_OBJECT FIELDS:
+
+ Name String
+
+ The name of an object.
+
+ Name Size
+
+ The number of octets in this name string. Must be even.
+
+ Name Characters
+
+ A string of octets composing the name. Ends with a null
+ octet. The number of characters must be even, so if the
+
+
+
+ Page 90
+
+
+
+ LDP Specification Management Commands
+
+
+
+ terminating null comes on an odd octet, another null is
+ appended.
+
+
+
+
+
+
+ 8.16 GOT_OBJECT Reply
+
+ The target sends a GOT_OBJECT reply to the host in response
+ to a successful GET_OBJECT command. The reply contains the
+ sequence number of the GET_OBJECT request, and the specified
+ object name converted into a descriptor.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 12 |
+ +---------------+---------------+
+ 1 | MANAGEMENT | GOT_OBJECT |
+ +---------------+---------------+
+ 2 | Get Sequence Number |
+ +---------------+---------------+ +-+
+ 3 | Mode | Mode Argument | |
+ +---------------+---------------+ |
+ 4 | | |
+ +-- ID --+ | Object
+ 5 | | | Descriptor
+ +---------------+---------------+ +-+
+
+
+ GOT_OBJECT Reply Format
+ Figure 60
+
+
+
+ GOT_OBJECT FIELDS:
+
+ Get Sequence Number
+
+ The sequence number of the GET_OBJECT command to which this
+ is the reply.
+
+ Descriptor
+
+
+
+ Page 91
+
+
+
+ RFC-909 July 1984
+
+
+
+ The descriptor of the object named in the GET_OBJECT
+ command.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 92
+
+
+
+ LDP Specification Breakpoints and Watchpoints
+
+
+
+ CHAPTER 9
+
+
+ Breakpoints and Watchpoints
+
+
+
+ Breakpoints and watchpoints are used in debugging
+ applications. Each breakpoint or watchpoint is associated with
+ one debugger connection and one address. When a breakpoint or
+ watchpoint is triggered, the target executes one or more commands
+ associated with it. A breakpoint is triggered when its address
+ is executed. A watchpoint is triggered when its address is
+ modified. The same mechanism is used for structuring breakpoint
+ and watchpoint commands. For brevity's sake, 'breakpoint' will
+ be used in the remainder of this document to refer to either a
+ breakpoint or a watchpoint.
+
+ The commands used by the host to manipulate breakpoints are
+ given in Figure 61, in the order in which they are normally used.
+ All commands are sent from the host to the target, and each
+ specifies the descriptor of a breakpoint.
+
+
+ Command Description
+ ---------------------+------------------------------------
+
+ CREATE Create a breakpoint
+ BREAKPOINT_DATA Send commands to be executed in an
+ FSM breakpoint
+ START Activate a breakpoint, set state
+ and initialize breakpoint variables
+ STOP Deactivate a breakpoint
+ CONTINUE Activate a breakpoint
+ LIST_BREAKPOINTS List all breakpoints
+ REPORT Report the status of a breakpoint
+ DELETE Delete a breakpoint
+
+
+ Commands to Manipulate Breakpoints
+ Figure 61
+
+
+
+
+
+
+
+
+
+ Page 93
+
+
+
+ RFC-909 July 1984
+
+
+
+ There are two kinds of breakpoints: default breakpoints and
+ finite state machine (FSM) breakpoints. They differ in their use
+ of commands.
+
+ Default breakpoints do not contain any commands. When
+ triggered, a default breakpoint stops the target object (i.e.,
+ target process or application) it is located in. A STATUS report
+ on the stopped object is sent to the host. At this point, the
+ host may send further commands to debug the target.
+
+ An FSM breakpoint has one or more conditional command lists,
+ organized into a finite state machine. When an FSM breakpoint is
+ created, the total number of states is specified. The host then
+ sends commands (using BREAKPOINT_DATA) to be associated with each
+ state. The target maintains a state variable for the breakpoint,
+ which determines which command list will be executed if the
+ breakpoint is triggered. When the breakpoint is created its
+ state variable is initialized to zero (zero is the first state).
+ A breakpoint command, SET_STATE, may be used within a breakpoint
+ to change the value of the state variable. A REPORT command
+ applied to a breakpoint descriptor returns its address, whether
+ it is armed or disarmed, and the value of its state variable.
+
+ Commands valid in breakpoints include all implemented data
+ transfer and control commands, a set of conditional commands, and
+ a set of breakpoint commands. The conditional commands and the
+ breakpoint commands act on a set of local breakpoint variables.
+ The breakpoint variables consist of the state variable, a
+ counter, and two pointer variables. The conditional commands
+ control the execution of breakpoint command lists based on the
+ contents of one of the breakpoint variables. The breakpoint
+ commands are used to set the value of the breakpoint variables:
+ SET_STATE sets the state variable, SET_PTR sets one of the
+ pointer variables, and INC_COUNT increments the breakpoint
+ counter. There may be implementation restrictions on the number
+ of breakpoints, the number of states, the number of conditions,
+ and the size of the command lists. Management commands and
+ protocol commands are forbidden in breakpoints.
+
+ In FSM breakpoints, the execution of commands is controlled
+ as follows. When a breakpoint is triggered, the breakpoint's
+ state variable selects a particular state. One or more
+ conditional command lists is associated with this state. A
+ conditional command list consists of a list of conditions
+ followed by a list of commands which are executed if the
+ condition list is satisfied. The debugger starts a breakpoint by
+ executing the first of these lists. If the condition list is
+
+
+
+ Page 94
+
+
+
+ LDP Specification Breakpoints and Watchpoints
+
+
+
+ satisfied, the debugger executes the associated command list and
+ leaves the breakpoint. If the condition list fails, the debugger
+ skips to the next conditional command list. This process
+ continues until the debugger either encounters a successful
+ condition list, or exhausts all the conditional command lists for
+ the state. The relationship of commands, lists and states is
+ shown in Figure 62 (IFs, THENs and ELSEs are used below to
+ clarify the logical structure within a state; they are not part
+ of the protocol).
+
+
+ State 0
+ IF <condition list 0>
+ THEN <command list 0>
+
+ ELSE IF <condition list 1>
+ THEN <command list 1>
+
+ *
+ *
+ *
+
+ ELSE IF <condition list n>
+ THEN <command list n>
+
+ ELSE <exit>
+ *
+ *
+ *
+ State n
+
+
+ Breakpoint Conditional Command Lists
+ Figure 62
+
+
+
+
+
+ 9.1 BREAKPOINT_DATA Command
+
+ BREAKPOINT_DATA is a data transfer command used by the host
+ to send commands to be executed in breakpoints and watchpoints.
+ The command specifies the descriptor of the breakpoint or
+ watchpoint, and a stream of commands to be appended to the end of
+ the breakpoint's command list. BREAKPOINT_DATA is applied
+ sequentially to successive breakpoint states, and successive
+
+
+
+ Page 95
+
+
+
+ RFC-909 July 1984
+
+
+
+ command lists within each state. Multiple BREAKPOINT_DATAs may
+ be sent for a given breakpoint. Breaks between BREAKPOINT_DATA
+ commands may occur anywhere within the data stream, even within
+ individual commands in the data. Sufficient space to store the
+ data must have been allocated by the maximum size field in the
+ CREATE BREAKPOINT/WATCHPOINT command.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | DATA_TRANSFER |BREAKPOINT_DATA|
+ +---------------+---------------+ +-+
+ 2 | Mode | Mode Argument | |
+ +---------------+---------------+ | Breakpoint or
+ 3 | | | Watchpoint
+ +-- ID --+ | Descriptor
+ 4 | Field | |
+ +-------------------------------+ +-+
+ 5 | Data | Data | |
+ +-------------------------------+ |
+ * |
+ * | Data
+ * |
+ +---------------+---------------+ |
+ n | Data | Data or 0 | |
+ +---------------+---------------+ +-+
+
+
+ BREAKPOINT_DATA Command Format
+ Figure 63
+
+
+ BREAKPOINT_DATA FIELDS:
+
+ Command Length
+
+ Total length of this command in octets, including data,
+ excluding the final padding octet, if any.
+
+ Data
+
+ A stream of data to be appended to the data for this
+ breakpoint or watchpoint. This stream has the form of one
+ or more states, each containing one or more conditional
+
+
+
+ Page 96
+
+
+
+ LDP Specification Breakpoints and Watchpoints
+
+
+
+ command lists. The first BREAKPOINT_DATA command sent for a
+ breakpoint contains data starting with state zero. The data
+ for each state starts with the state size. A conditional
+ command list is composed of two parts: a condition list, and
+ a command list. Each list begins with a word that gives its
+ size in octets.
+
+
+
+ <state 0 size>
+ <condition list 0 size> <condition list 0>
+ <command list 0 size> <command list 0>
+ *
+ *
+ *
+ <condition list n size> <condition list n>
+ <command list n size> <command list n>
+ <state 1 size>
+ <etc>
+ *
+ *
+ *
+ <state n size>
+
+
+ Breakpoint Data Stream Format
+ Figure 64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 97
+
+
+
+ RFC-909 July 1984
+
+
+
+ Sizes
+
+ All sizes are stored in 16-bit words, and include their own
+ length. The state size gives the total number of octets of
+ breakpoint data for the state. The condition list size
+ gives the total octets of breakpoint data for the following
+ condition list. A condition list size of 2 indicates an
+ empty condition list: in this case the following command
+ list is executed unconditionally. The command list size
+ gives the total octets of breakpoint data for the following
+ command list.
+
+ Lists
+
+ Condition and command lists come in pairs. When the
+ breakpoint occurs, the condition list controls whether the
+ following command list should be executed. A condition list
+ consists of one or more commands from the CONDITION command
+ class. A command list consists one or more LDP commands.
+ Valid commands are any commands from the BREAKPOINT,
+ DATA_TRANSFER or CONTROL command classes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 98
+
+
+
+ LDP Specification Conditional Commands
+
+
+
+ CHAPTER 10
+
+
+ Conditional Commands
+
+
+
+ Conditional commands are used in breakpoints to control the
+ execution of breakpoint commands. One or more conditions in
+ sequence form a condition list. If a condition list is satisfied
+ (evaluates to TRUE), the breakpoint command list immediately
+ following it is executed. (See Breakpoints and Watchpoints,
+ above, for a discussion of the logic flow in conditional/command
+ lists.) Conditional commands perform tests on local breakpoint
+ variables, and other locations. Each condition evaluates to
+ either TRUE or FALSE. Figure 65 contains a summary of
+ conditional commands:
+
+
+ Command Description
+ -----------------------------+------------------------------------
+
+ CHANGED <loc> Determine if a location has changed
+ COMPARE <loc1> <mask> <loc2> Compare two locations, using a mask
+ COUNT_[EQ | GT | LT] <value> Compare the counter to a value
+ TEST <loc> <mask> <value> Compare a location to a value
+
+
+ Conditional Command Summary
+ Figure 65
+
+
+ The rules for forming and evaluating condition lists are:
+
+
+ o consecutive conditions have an implicit logical AND between
+ them. A sequence of such conditions is called an 'and_list'.
+ and_lists are delimited by an OR command and by the end of
+ the condition list.
+
+ o the breakpoint OR command may be inserted between any pair of
+ conditions
+
+ o AND takes precedence over OR
+
+ o nested condition lists are not supported. A condition list
+ is simply one or more and_lists, separated by ORs.
+
+
+
+ Page 99
+
+
+
+ RFC-909 July 1984
+
+
+
+ o the condition list is evaluated in sequence until either a
+ TRUE and_list is found (condition list <- TRUE), or the end
+ of the condition list is reached (condition list <- FALSE).
+ An and_list is TRUE if all its conditions are TRUE.
+
+ The distillation of these rules into BNF is:
+
+ <condition_list> :== <and_list> [OR <and_list>]*
+ <and_list> :== <condition> [AND <condition>]*
+ <condition> :== CHANGED | COMPARE | COUNT | TEST
+
+ where: OR is a breakpoint command
+ AND is implicit for any pair of consecutive conditions
+
+ For example, the following condition list, with one command per
+ line,
+
+ COUNT_EQ 1
+ OR
+ COUNT_GT 10
+ COUNT_LT 20
+
+ evaluates to:
+
+ (COUNT = 1) OR (COUNT > 10 AND COUNT < 20)
+
+ and will cause the command list that follows it to be executed if
+ the counter is equal to one, or is between 10 and 20.
+
+
+
+
+ 10.1 Condition Command Format
+
+ Condition commands start with the standard four-octet
+ command header. The high-order bit of the command type byte is
+ used as a negate flag: if this bit is set, the boolean value of
+ the condition is negated. This flag applies to one condition
+ only, and not to other conditions in the condition list.
+
+
+
+
+
+
+
+
+
+
+
+ Page 100
+
+
+
+ LDP Specification Conditional Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | Command Length |
+ +---------------+---------------+
+ 1 | CONDITION |N| Type |
+ +---------------+---------------+
+
+
+ Condition Command Header
+ Figure 66
+
+
+
+
+
+
+ 10.2 COUNT Conditions
+
+ The COUNT conditions (COUNT_EQ, COUNT_GT and COUNT_LT) are
+ used to compare the breakpoint counter to a specified value. The
+ counter is set to zero when the breakpoint is STARTed, and is
+ incremented by the INC_COUNT breakpoint command. The format is
+ the same for the COUNT_EQ, COUNT_GT and COUNT_LT conditions.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 8 |
+ +---------------+---------------+
+ 1 | CONDITION |N| Type |
+ +---------------+---------------+
+ 2 | |
+ +-- Value --+
+ 3 | |
+ +---------------+---------------+
+
+
+ COUNT Condition Format
+ Figure 67
+
+
+ COUNT_* Condition FIELDS:
+
+
+
+
+ Page 101
+
+
+
+ RFC-909 July 1984
+
+
+
+ Type
+
+ One of COUNT_EQ, COUNT_LT and COUNT_GT. The condition is
+ TRUE if the breakpoint counter is [EQ | LT | GT] the
+ specified value.
+
+ Value
+
+ A 32-bit value to be compared to the counter.
+
+
+
+
+
+ 10.3 CHANGED Condition
+
+ The CHANGED condition is TRUE if the contents of the
+ specified location have changed since the last time this
+ breakpoint occurred. Only one location may be specified as the
+ object of CHANGED conditions per breakpoint. The CHANGED
+ condition is always FALSE the first time the breakpoint occurs.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 14 |
+ +---------------+---------------+
+ 1 | CONDITION |N| CHANGED |
+ +---------------+---------------+
+ 2 | |
+ +-- --+
+ 3 | Address |
+ +-- --+
+ 4 | |
+ +-- --+
+ 5 | |
+ +-- --+
+ 6 | |
+ +---------------+---------------+
+
+
+ CHANGED Condition
+ Figure 68
+
+
+
+
+
+
+ Page 102
+
+
+
+ LDP Specification Conditional Commands
+
+
+
+ CHANGED FIELDS:
+
+ Address
+
+ The full 5-word address of the location to be tested by the
+ CHANGED command.
+
+
+
+
+ 10.4 COMPARE Condition
+
+ The COMPARE condition compares two locations using a mask.
+ The condition is TRUE if (<loc1> & <mask>) = (<loc2> & <mask>).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 103
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 28 |
+ +---------------+---------------+
+ 1 | CONDITION |N| COMPARE |
+ +---------------+---------------+
+ 2 | |
+ +-- --+
+ 3 | Address 1 |
+ +-- --+
+ 4 | |
+ +-- --+
+ 5 | |
+ +-- --+
+ 6 | |
+ +---------------+---------------+
+ 7 | |
+ +-- Mask --+
+ 8 | |
+ +-------------------------------+
+ 9 | |
+ +-- --+
+ 10| Address 2 |
+ +-- --+
+ 11| |
+ +-- --+
+ 12| |
+ +-- --+
+ 13| |
+ +-------------------------------+
+
+ COMPARE Condition
+ Figure 69
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 104
+
+
+
+ LDP Specification Conditional Commands
+
+
+
+ COMPARE FIELDS:
+
+ Address 1
+ Address 2
+
+ The 5-word addresses of the locations to be compared.
+
+ Mask
+
+ A 32-bit mask specifying which bits in the locations should
+ be compared.
+
+
+
+
+
+
+ 10.5 TEST Condition
+
+ The TEST condition is used to compare a location to a value,
+ using a mask. The condition is TRUE if (<loc> & <mask>) =
+ <value>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 105
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 22 |
+ +---------------+---------------+
+ 1 | CONDITION |N| TEST |
+ +---------------+---------------+
+ 2 | |
+ +-- --+
+ 3 | Address |
+ +-- --+
+ 4 | |
+ +-- --+
+ 5 | |
+ +-- --+
+ 6 | |
+ +---------------+---------------+
+ 7 | |
+ +-- Mask --+
+ 8 | |
+ +-------------------------------+
+ 9 | |
+ +-- Value --+
+ 10| |
+ +-------------------------------+
+
+ TEST Condition
+ Figure 70
+
+
+ TEST FIELDS:
+
+ Address
+
+ The 5-word address of the location to be compared to the
+ value.
+
+ Mask
+
+ A 32-bit mask specifying which bits in the location should
+ be compared.
+
+ Value
+
+ A 32-bit value to compare to the masked location.
+
+
+
+ Page 106
+
+
+
+ LDP Specification Conditional Commands
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 107
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 108
+
+
+
+ LDP Specification Breakpoint Commands
+
+
+
+ CHAPTER 11
+
+
+ Breakpoint Commands
+
+
+
+ Breakpoint commands are used to set the value of breakpoint
+ variables. These commands are only valid within breakpoints and
+ watchpoints. They are sent from the host to the target as data
+ in BREAKPOINT_DATA commands. Figure 71 contains a summary of
+ breakpoint commands:
+
+
+ Command Description
+ ------------------------+-------------------------------------
+
+ INCREMENT <location> Increment the specified location
+ INC_COUNT Increment the breakpoint counter
+ OR OR two breakpoint condition lists
+ SET_PTR <n> <location> Set pointer <n> to the contents of
+ <location>
+ SET_STATE <n> Set the breakpoint state variable
+ to <n>
+
+
+ Breakpoint Command Summary
+ Figure 71
+
+
+
+
+
+
+ 11.1 INCREMENT Command
+
+ The INCREMENT command increments the contents of a specified
+ location. The location may be in any address space writable from
+ LDP.
+
+
+
+
+
+
+
+
+
+
+
+ Page 109
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 14 |
+ +---------------+---------------+
+ 1 | BREAKPOINT | INCREMENT |
+ +---------------+---------------+
+ 2 | |
+ +-- --+
+ 3 | Address |
+ +-- --+
+ 4 | |
+ +-- --+
+ 5 | |
+ +-- --+
+ 6 | |
+ +---------------+---------------+
+
+
+ INCREMENT Command Format
+ Figure 72
+
+
+ INCREMENT FIELDS:
+
+ Address
+
+ The full address of the location whose contents are to be
+ incremented.
+
+
+
+
+ 11.2 INC_COUNT Command
+
+ The INC_COUNT command increments the breakpoint counter.
+ There is one counter variable for each breakpoint. It is
+ initialized to zero when the breakpoint is created, when it is
+ armed with the START command, and whenever the breakpoint state
+ changes. The counter is tested by the COUNT_* conditions.
+
+
+
+
+
+
+
+
+ Page 110
+
+
+
+ LDP Specification Breakpoint Commands
+
+
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 4 |
+ +---------------+---------------+
+ 1 | BREAKPOINT | INC_COUNT |
+ +---------------+---------------+
+
+
+ INC_COUNT Command Format
+ Figure 73
+
+
+
+
+
+
+ 11.3 OR Command
+
+ The OR command delineates two and_lists in a breakpoint
+ condition list. A condition list is TRUE if any of the OR
+ separated and_lists in it are TRUE. A breakpoint condition list
+ may contain zero, one or, many OR commands. See 'Condition
+ Commands' for an explanation of condition lists.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 4 |
+ +---------------+---------------+
+ 1 | BREAKPOINT | OR |
+ +---------------+---------------+
+
+
+ OR Command Format
+ Figure 74
+
+
+
+
+
+
+
+
+
+
+ Page 111
+
+
+
+ RFC-909 July 1984
+
+
+
+ 11.4 SET_PTR Command
+
+ The SET_PTR command loads the specified breakpoint pointer
+ with the contents of a location. The pointer variables and the
+ SET_PTR command are intended to provide a primitive but unlimited
+ indirect addressing capability. Two addressing modes,
+ BPT_PTR_OFFSET and BPT_PTR_INDIRECT, are used for referencing the
+ breakpoint pointers. For example, to follow a linked list, use
+ SET_PTR to load a pointer with the start of the list, then use
+ successive SET_PTR commands with addressing mode BPT_PTR_OFFSET
+ to get successive elements.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 16 |
+ +---------------+---------------+
+ 1 | BREAKPOINT | SET_PTR |
+ +---------------+---------------+
+ 2 | Pointer |
+ +---------------+---------------+
+ 3 | |
+ +-- --+
+ 4 | Address |
+ +-- --+
+ 5 | |
+ +-- --+
+ 6 | |
+ +-- --+
+ 7 | |
+ +---------------+---------------+
+
+
+ SET_PTR Command Format
+ Figure 75
+
+
+ SET_PTR FIELDS:
+
+ Pointer
+
+ The pointer to be changed. Allowable values are 0 and 1.
+
+ Address
+
+
+
+
+ Page 112
+
+
+
+ LDP Specification Breakpoint Commands
+
+
+
+ The full address of the location whose contents are to be
+ loaded into the given pointer variable.
+
+
+
+
+
+ 11.5 SET_STATE Command
+
+ The SET_STATE command sets the breakpoint state variable to
+ the specified value. This is the only method of changing a
+ breakpoint's state from within a breakpoint. The breakpoint's
+ state may be also be changed by a START command from the host.
+ The state variable is initialized to zero when the breakpoint is
+ created.
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 | 6 |
+ +---------------+---------------+
+ 1 | BREAKPOINT | SET_STATE |
+ +---------------+---------------+
+ 2 | State Value |
+ +-------------------------------+
+
+
+ SET_STATE Command Format
+ Figure 76
+
+
+ SET_STATE FIELDS:
+
+ State Value
+
+ The new value for the breakpoint state variable. Must not
+ be greater than the maximum state value specified in the
+ CREATE BREAKPOINT command that created this breakpoint.
+
+
+
+
+
+
+
+
+
+
+
+ Page 113
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 114
+
+
+
+ LDP Specification Diagram Conventions
+
+
+
+ APPENDIX A
+
+
+ Diagram Conventions
+
+
+
+ Command and message diagrams are used in this document to
+ illustrate the format of these entities. Words are listed in
+ order of transmission down the page. The first word is word
+ zero. Bits within a word run left to right, most significant to
+ least. However, following a convention observed in other
+ protocol documents, bits are numbered in order of transmission;
+ the most significant bit in a word is transmitted first. The bit
+ labelled '0' is the most significant bit.
+
+
+
+ 0 0 0 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +---------------+---------------+
+ 0 |M| |L|
+ +---------------+---------------+
+ 1 | Most Sig Octet| Least S. Octet|
+ +---------------+---------------+
+
+ M = most significant bit in word zero,
+ transmitted first
+ L = least significant bit in word zero,
+ transmitted last
+
+
+ Sample Diagram
+ Figure 77
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 115
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 116
+
+
+
+ LDP Specification Command Summary
+
+
+
+ APPENDIX B
+
+
+ Command Summary
+
+
+
+ The following table lists all non-breakpoint LDP commands in
+ alphabetical order, with a brief description of each.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 117
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+ Sender
+ Command | Host Target | Function
+ -------------------+-------------+---------------------------
+
+ ABORT X Abort outstanding commands
+ ABORT_DONE X Acknowledge ABORT
+ ADDRESS_LIST X Return valid address ranges
+ BREAKPOINT_DATA X Send breakpoint commands
+ BREAKPOINT_LIST X Return list of breakpoints
+ CONTINUE X Resume execution
+ CREATE X Create target object
+ CREATE_DONE X Acknowledge CREATE
+ DELETE X Delete target object
+ DELETE_DONE X Acknowledge DELETE
+ EXCEPTION X Report target exception
+ ERROR X Report error with a host command
+ ERRACK X Acknowledge ERROR
+ GET_OBJECT X Get object descriptor from name
+ GET_PHYS_ADDRESS X Get address in physical form
+ GOT_OBJECT X Return object descriptor
+ GOT_PHYS_ADDRESS X Return physical address
+ HELLO X Initiate LDP session
+ HELLO_REPLY X Return LDP parameters
+ LIST_ADDRESSES X Request valid address ranges
+ LIST_BREAKPOINTS X Request breakpoint list
+ LIST_NAMES X Request name list
+ LIST_PROCESSES X Request process list
+ MOVE X Read data from target
+ MOVE_DONE X Acknowledge MOVE completion
+ MOVE_DATA X Send data request by MOVE
+ NAME_LIST X Return name list
+ PROCESS_LIST X Return process list
+ READ X Read data from target
+ READ_DATA X Return data requested by READ
+ READ_DONE X Acknowledge READ completion
+ REPEAT_DATA X Write copies of data
+ REPORT X Request status of object
+ START X Start target object
+ STATUS X Return status of object
+ STEP X Step execution of target object
+ STOP X Stop target object
+ SYNCH X Check sequence number
+ SYNCH_REPLY X Confirm sequence number
+ WRITE X Write data
+ WRITE_MASK X Write data with mask
+
+
+
+ Page 118
+
+
+
+ LDP Specification Command Summary
+
+
+
+ Command Summary
+ Figure 78
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 119
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 120
+
+
+
+ LDP Specification Commands, Responses and Replies
+
+
+
+ APPENDIX C
+
+
+ Commands, Responses and Replies
+
+
+
+ The following table shows the relationship between commands,
+ responses and replies. Commands are sent from the host to the
+ target. Some commands elicit responses and/or replies from the
+ target. Responses and replies are sent from the target to the
+ host. The distinction between them is that the target sends only
+ one reply to a command, but may send multiple responses.
+ Responses always contain data, whereas replies may or may not.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 121
+
+
+
+ RFC-909 July 1984
+
+
+
+
+
+
+ Command | Response | Reply
+ -------------------+--------------+------------------
+
+ ABORT ABORT_DONE
+ BREAKPOINT_DATA
+ CONTINUE
+ CREATE CREATE_DONE
+ DELETE DELETE_DONE
+ GET_OBJECT GOT_OBJECT
+ GET_PHYS_ADDRESS GOT_PHYS_ADDRESS
+ HELLO HELLO_REPLY
+ LIST_ADDRESSES ADDRESS_LIST
+ LIST_BREAKPOINTS BREAKPOINT_LIST
+ LIST_NAMES NAME_LIST
+ LIST_PROCESSES PROCESS_LIST
+ MOVE MOVE_DATA MOVE_DONE
+ READ READ_DATA READ_DONE
+ REPEAT_DATA
+ REPORT STATUS
+ START
+ STEP
+ STOP
+ SYNCH SYNCH_REPLY
+ WRITE
+ WRITE_MASK
+
+
+ Commands, Responses and Replies
+ Figure 79
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 122
+
+
+
+ LDP Specification Glossary
+
+
+
+ APPENDIX D
+
+
+ Glossary
+
+
+
+
+ FSM
+
+ Finite state machine. Commands of each breakpoint or
+ watchpoint are implemented as part of a finite state
+ machine. A list of breakpoint commands is associated with
+ each state. There are several breakpoint commands to change
+ from one state to another.
+ host
+
+ The 'host' in an LDP session is the timesharing system on
+ which the user process runs.
+
+
+ long
+
+ A long is a 32-bit quantity.
+
+ octet
+
+ An octet is an eight-bit quantity.
+
+ RDP
+
+ The Reliable Data Protocol (RDP) is a transport layer
+ protocol designed as a low-overhead alternative to TCP. RDP
+ is a connection oriented protocol that provides reliable,
+ sequenced message delivery.
+
+ server process
+
+ The LDP server process is the passive participant in an LDP
+ session. The server process usually resides on a target
+ machine such as a PAD, PSN or gateway. The server process
+ waits for a user process to initiate a session, and responds
+ to commands from the user process. In response to user
+ commands, the server may perform services on the target like
+ reading and writing memory locations or setting breakpoints.
+ 'Server' is sometimes employed as a shorthand for 'server
+ process'.
+
+
+
+ Page 123
+
+
+
+ RFC-909 July 1984
+
+
+
+ target
+
+ The 'target' in an LDP session is the PSN, PAD or gateway
+ that is being loaded, dumped or debugged by the host.
+ Normally, LDP will be implemented in the target as a server
+ process. However, in some targets with strange
+ requirements, notably the Butterfly, the target LDP may be a
+ user process.
+
+
+ user process
+
+ The LDP user process is the active participant in an LDP
+ session. The user process initiates and terminates the
+ session and sends commands to the server process which
+ control the session. The user process usually resides on a
+ timesharing host and is driven by a higher-level entity
+ (e.g., an application program like an interactive debugger).
+ 'User' is sometimes employed as a shorthand for 'user
+ process'.
+
+
+ word
+
+ A word is a sixteen-bit quantity.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 124
+
+
+
+
+
+
+
+ INDEX
+
+
+
+
+
+ ABORT command............................................ 35
+ ABORT_DONE reply......................................... 36
+ address.............................................. 60, 66
+ address descriptor....................................... 20
+ address format................................... 19, 25, 31
+ address ID............................................... 22
+ address mode......................................... 20, 22
+ address mode argument.................................... 21
+ address offset........................................... 20
+ addressing............................................... 19
+ ADDRESS_LIST reply................................... 76, 77
+ BASIC_DEBUGGER....................................... 12, 32
+ breakpoint... 9, 13, 57, 60, 71, 79, 92, 93, 95, 96, 99, 107
+ breakpoint commands.......................... 9, 94, 95, 107
+ breakpoint counter........................ 94, 100, 101, 110
+ breakpoint data...................................... 97, 99
+ breakpoint state variable........................... 94, 107
+ breakpoint variables..................................... 94
+ BREAKPOINT_DATA command..................... 73, 94, 95, 107
+ BREAKPOINT_LIST reply................................ 79, 80
+ CHANGED condition....................................... 102
+ command class............................................ 16
+ command length field..................................... 16
+ COMPARE Condition....................................... 103
+ condition command header................................ 101
+ conditional commands................................. 94, 99
+ CONTINUE command......................................... 62
+ control commands...................................... 9, 57
+ COUNT condition.................................... 110, 111
+ COUNT_EQ condition...................................... 101
+ COUNT_GT condition...................................... 101
+ COUNT_LT condition...................................... 101
+ CREATE command............................... 69, 70, 73, 75
+ create types............................................. 70
+ CREATE_DONE reply.................................... 73, 75
+ data octets...................................... 43, 47, 52
+ data packing............................................. 10
+ data transfer commands................................ 9, 41
+ data transmission........................................ 10
+ datagrams................................................. 5
+ debugging.............................................. 1, 3
+
+
+
+ Page 125
+
+
+
+
+
+
+
+ default breakpoint................................... 71, 92
+ DELETE command....................................... 73, 75
+ DELETE_DONE reply........................................ 75
+ descriptor........... 20, 57, 61, 62, 63, 64, 65, 73, 75, 93
+ dumping................................................... 3
+ ERRACK............................................... 10, 39
+ ERROR codes.............................................. 38
+ ERROR reply.......................................... 37, 67
+ EXCEPTION trap........................................... 66
+ finite state machine................................. 60, 93
+ FSM breakpoint................................... 71, 92, 94
+ FULL-DEBUGGER............................................ 12
+ FULL_DEBUGGER............................................ 32
+ gateway................................................ 3, 9
+ GET_OBJECT command................................... 89, 91
+ GET_PHYS_ADDR command................................ 87, 88
+ GOT_OBJECT reply..................................... 89, 91
+ GOT_PHYS_ADDR reply.................................. 87, 88
+ HELLO command......................................... 9, 29
+ HELLO_REPLY....................................... 9, 19, 30
+ host descriptor.......................................... 41
+ implementation....................................... 12, 31
+ INC_COUNT command......................... 94, 107, 110, 111
+ INCREMENT command....................................... 109
+ internet.................................................. 5
+ internet protocols........................................ 4
+ IP........................................................ 5
+ LDP command formats...................................... 15
+ LDP header........................................... 15, 16
+ LDP Version.............................................. 30
+ LIST commands............................................ 73
+ LIST_ADDRESSES command............................... 76, 77
+ LIST_BREAKPOINTS command............................. 79, 80
+ LIST_NAMES command................................... 84, 85
+ LIST_PROCESSES command................................... 82
+ LOADER_DUMPER........................................ 12, 32
+ loading................................................ 1, 3
+ long address format...................................... 20
+ management commands...................................... 67
+ memory object............................................ 73
+ MOVE command................................. 22, 41, 47, 49
+ MOVE sequence number..................................... 52
+ MOVE_DATA response................................... 22, 51
+ MOVE_DONE reply.......................................... 52
+ NAME_LIST reply...................................... 84, 85
+ offset............................................... 20, 22
+ OR command.............................................. 111
+
+
+
+ Page 126
+
+
+
+
+
+
+
+ PAD.................................................... 3, 9
+ pattern.................................................. 54
+ PHYS_ADDRESS............................................. 57
+ PHYS_MACRO............................................... 60
+ PROCESS.................................................. 57
+ PROCESS_CODE............................................. 60
+ PROCESS_LIST reply....................................... 82
+ protocol commands......................................... 9
+ PSN.................................................... 3, 9
+ RDP................................................... 5, 15
+ READ command..................................... 41, 43, 44
+ READ sequence number..................................... 47
+ READ_DATA response................................... 45, 46
+ READ_DONE reply.......................................... 47
+ repeat count............................................. 54
+ REPEAT_DATA command.................................. 41, 53
+ REPORT command................................... 63, 64, 94
+ sequence number...................................... 10, 39
+ session................................................... 9
+ SET_PTR command................................ 94, 111, 112
+ SET_STATE command.............................. 94, 107, 113
+ short address format..................................... 25
+ START command........................................ 59, 60
+ STATUS reply..................................... 64, 65, 94
+ STEP command......................................... 62, 63
+ STOP command......................................... 60, 61
+ SYNCH.................................................... 10
+ SYNCH command............................................ 33
+ SYNCH_REPLY.............................................. 34
+ system type.............................................. 30
+ target start address......................... 43, 44, 46, 54
+ transport................................................. 9
+ watchpoint.......... 13, 57, 60, 71, 92, 93, 95, 96, 99, 107
+ WRITE command........................................ 41, 42
+ WRITE_MASK command....................................... 56
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 127
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page 128
+