gdb: IPA Protocol Objects

 
 30.1.1 IPA Protocol Objects
 ---------------------------
 
 The commands sent to and results received from agent may contain some
 complex data types called "objects".
 
    The in-process agent is running on the same machine with GDB or
 GDBserver, so it doesn't have to handle as much differences between two
 ends as remote protocol (SeeRemote Protocol) tries to handle.
 However, there are still some differences of two ends in two processes:
 
   1. word size.  On some 64-bit machines, GDB or GDBserver can be
      compiled as a 64-bit executable, while in-process agent is a 32-bit
      one.
   2. ABI. Some machines may have multiple types of ABI, GDB or GDBserver
      is compiled with one, and in-process agent is compiled with the
      other one.
 
    Here are the IPA Protocol Objects:
 
   1. agent expression object.  It represents an agent expression (See
      Agent Expressions).
   2. tracepoint action object.  It represents a tracepoint action (See
      Tracepoint Action Lists Tracepoint Actions.) to collect registers,
      memory, static trace data and to evaluate expression.
   3. tracepoint object.  It represents a tracepoint (See
      Tracepoints).
 
    The following table describes important attributes of each IPA
 protocol object:
 
 Name                   Size           Description
 ---------------------------------------------------------------------------
 _agent expression
 object_
 length                 4              length of bytes code
 byte code              LENGTH         contents of byte code
 _tracepoint action
 for collecting
 memory_
 'M'                    1              type of tracepoint action
 addr                   8              if BASEREG is '-1', ADDR is the
                                       address of the lowest byte to
                                       collect, otherwise ADDR is the
                                       offset of BASEREG for memory
                                       collecting.
 len                    8              length of memory for collecting
 basereg                4              the register number containing the
                                       starting memory address for
                                       collecting.
 _tracepoint action
 for collecting
 registers_
 'R'                    1              type of tracepoint action
 _tracepoint action
 for collecting
 static trace data_
 'L'                    1              type of tracepoint action
 _tracepoint action
 for expression
 evaluation_
 'X'                    1              type of tracepoint action
 agent expression       length of      Seeagent expression object
 _tracepoint object_
 number                 4              number of tracepoint
 address                8              address of tracepoint inserted on
 type                   4              type of tracepoint
 enabled                1              enable or disable of tracepoint
 step_count             8              step
 pass_count             8              pass
 numactions             4              number of tracepoint actions
 hit count              8              hit count
 trace frame usage      8              trace frame usage
 compiled_cond          8              compiled condition
 orig_size              8              orig size
 condition              4 if           zero if condition is NULL,
                        condition is   otherwise is
                        NULL           Seeagent expression object
                        otherwise
                        length of
                        Seeagent expression object
 actions                variable       numactions number of
                                       Seetracepoint action object