xref: /openbsd-src/gnu/usr.bin/binutils/gdb/vx-share/xdr_rdb.h (revision e93f7393d476ad1c5192174ea92f14ecc97182e7)
1*e93f7393Sniklas /* xdr_rdb.h - xdr for additional rdb structures */
2*e93f7393Sniklas 
3*e93f7393Sniklas /* Copyright 1992 Free Software Foundation, Inc.
4*e93f7393Sniklas 
5*e93f7393Sniklas    This code was donated by Wind River Systems, Inc. */
6*e93f7393Sniklas 
7*e93f7393Sniklas /*
8*e93f7393Sniklas modification history
9*e93f7393Sniklas --------------------
10*e93f7393Sniklas 01c,25may91,maf  rolled RDBVERS for VxGDB 1.0 version.
11*e93f7393Sniklas 01b,12apr91,maf  rolled RDBVERS.
12*e93f7393Sniklas 01a,09jan91,maf  created using v1a of xdr_rdb.h for 4.0.2 VxWorks 68k.
13*e93f7393Sniklas 		 added struct SOURCE_STEP.
14*e93f7393Sniklas */
15*e93f7393Sniklas 
16*e93f7393Sniklas #ifndef INCxdrrdbh
17*e93f7393Sniklas #define INCxdrrdbh
18*e93f7393Sniklas 
19*e93f7393Sniklas enum arg_type {
20*e93f7393Sniklas         T_UNKNOWN = 0,
21*e93f7393Sniklas         T_BYTE = 1,
22*e93f7393Sniklas         T_WORD = 2,
23*e93f7393Sniklas         T_INT = 3,
24*e93f7393Sniklas         T_FLOAT = 4,
25*e93f7393Sniklas         T_DOUBLE = 5
26*e93f7393Sniklas };
27*e93f7393Sniklas typedef enum arg_type arg_type;
28*e93f7393Sniklas bool_t xdr_arg_type();
29*e93f7393Sniklas 
30*e93f7393Sniklas 
31*e93f7393Sniklas struct arg_value {
32*e93f7393Sniklas         arg_type type;
33*e93f7393Sniklas         union {
34*e93f7393Sniklas                 char v_byte;
35*e93f7393Sniklas                 short v_word;
36*e93f7393Sniklas                 int v_int;
37*e93f7393Sniklas                 float v_fp;
38*e93f7393Sniklas                 double v_dp;
39*e93f7393Sniklas         } arg_value_u;
40*e93f7393Sniklas };
41*e93f7393Sniklas typedef struct arg_value arg_value;
42*e93f7393Sniklas bool_t xdr_arg_value();
43*e93f7393Sniklas 
44*e93f7393Sniklas struct func_call {
45*e93f7393Sniklas         int func_addr;
46*e93f7393Sniklas         struct {
47*e93f7393Sniklas                 u_int args_len;
48*e93f7393Sniklas                 arg_value *args_val;
49*e93f7393Sniklas         } args;
50*e93f7393Sniklas };
51*e93f7393Sniklas typedef struct func_call func_call;
52*e93f7393Sniklas bool_t xdr_func_call();
53*e93f7393Sniklas 
54*e93f7393Sniklas 
55*e93f7393Sniklas typedef char *arg_one;
56*e93f7393Sniklas bool_t xdr_arg_one();
57*e93f7393Sniklas 
58*e93f7393Sniklas 
59*e93f7393Sniklas typedef struct {
60*e93f7393Sniklas         u_int arg_array_len;
61*e93f7393Sniklas         arg_one *arg_array_val;
62*e93f7393Sniklas } arg_array;
63*e93f7393Sniklas bool_t xdr_arg_array();
64*e93f7393Sniklas 
65*e93f7393Sniklas 
66*e93f7393Sniklas /*
67*e93f7393Sniklas  * Structures used to pass structures required for
68*e93f7393Sniklas  * process control but not part of the standard ptrace interface
69*e93f7393Sniklas  */
70*e93f7393Sniklas 
71*e93f7393Sniklas /*
72*e93f7393Sniklas  * arg_info is used to pass arguments into process start
73*e93f7393Sniklas  */
74*e93f7393Sniklas struct arg_info {
75*e93f7393Sniklas 	int rargc;
76*e93f7393Sniklas 	char **rargv;
77*e93f7393Sniklas };
78*e93f7393Sniklas typedef struct arg_info Arg_info;
79*e93f7393Sniklas 
80*e93f7393Sniklas 
81*e93f7393Sniklas enum EVENT_TYPE {
82*e93f7393Sniklas         EVENT_BREAK = 0,
83*e93f7393Sniklas         EVENT_STOP = 1,
84*e93f7393Sniklas         EVENT_EXIT = 2,
85*e93f7393Sniklas         EVENT_BUS_ERR = 3,
86*e93f7393Sniklas         EVENT_SUSPEND = 4,
87*e93f7393Sniklas         EVENT_ZERO_DIV = 5,
88*e93f7393Sniklas         EVENT_SIGNAL = 6,
89*e93f7393Sniklas         EVENT_START = 7
90*e93f7393Sniklas };
91*e93f7393Sniklas typedef enum EVENT_TYPE EVENT_TYPE;
92*e93f7393Sniklas 
93*e93f7393Sniklas 
94*e93f7393Sniklas struct RDB_EVENT {
95*e93f7393Sniklas 	int status;
96*e93f7393Sniklas 	int taskId;
97*e93f7393Sniklas         EVENT_TYPE eventType;
98*e93f7393Sniklas         int sigType;
99*e93f7393Sniklas };
100*e93f7393Sniklas typedef struct RDB_EVENT RDB_EVENT;
101*e93f7393Sniklas 
102*e93f7393Sniklas 
103*e93f7393Sniklas struct TASK_START {
104*e93f7393Sniklas         int status;
105*e93f7393Sniklas         int pid;
106*e93f7393Sniklas };
107*e93f7393Sniklas typedef struct TASK_START TASK_START;
108*e93f7393Sniklas 
109*e93f7393Sniklas 
110*e93f7393Sniklas struct SYMBOL_ADDR {
111*e93f7393Sniklas         int status;
112*e93f7393Sniklas         u_int addr;
113*e93f7393Sniklas };
114*e93f7393Sniklas typedef struct SYMBOL_ADDR SYMBOL_ADDR;
115*e93f7393Sniklas 
116*e93f7393Sniklas struct SOURCE_STEP {
117*e93f7393Sniklas 	int taskId;
118*e93f7393Sniklas 	u_int startAddr;
119*e93f7393Sniklas 	u_int endAddr;
120*e93f7393Sniklas };
121*e93f7393Sniklas typedef struct SOURCE_STEP SOURCE_STEP;
122*e93f7393Sniklas 
123*e93f7393Sniklas #define MAX_ARG_CNT 10
124*e93f7393Sniklas #define MAX_FUNC_ARGS 100
125*e93f7393Sniklas #define MAX_ARG_LEN   100
126*e93f7393Sniklas 
127*e93f7393Sniklas 
128*e93f7393Sniklas bool_t xdr_arg_info();
129*e93f7393Sniklas bool_t xdr_EVENT_TYPE();
130*e93f7393Sniklas bool_t xdr_RDB_EVENT();
131*e93f7393Sniklas bool_t xdr_TASK_START();
132*e93f7393Sniklas bool_t xdr_SYMBOL_ADDR();
133*e93f7393Sniklas bool_t xdr_SOURCE_STEP();
134*e93f7393Sniklas 
135*e93f7393Sniklas #define RDBPROG (u_long) 0x44444444
136*e93f7393Sniklas #define RDBVERS (u_long) 3
137*e93f7393Sniklas #endif	INCxdrrdbh
138