daily update
[binutils-gdb.git] / gdb / vx-share / xdr_rdb.c
1 /* xdr_rdb.c - xdr routines for Remote Debug interface to VxWorks */
2
3 /* Copyright 1992, 1993 Free Software Foundation, Inc.
4
5 This code was donated by Wind River Systems, Inc. */
6
7 /*
8 modification history
9 --------------------
10 01a,21mar90,llk created using modification 01d of xdr_dbx.c.
11 */
12
13 /*
14 DESCRIPTION
15 This module contains the eXternal Data Representation (XDR) routines
16 for the RDB interface for VxWorks.
17 */
18
19 #include "defs.h"
20 #include "vxWorks.h"
21 #include <rpc/rpc.h>
22 #include "xdr_rdb.h"
23
24 /* forward declarations */
25
26 bool_t
27 xdr_arg_type(xdrs, objp)
28 XDR *xdrs;
29 arg_type *objp;
30 {
31 if (!xdr_enum(xdrs, (enum_t *)objp)) {
32 return (FALSE);
33 }
34 return (TRUE);
35 }
36
37 bool_t
38 xdr_arg_value(xdrs, objp)
39 XDR *xdrs;
40 arg_value *objp;
41 {
42 if (!xdr_arg_type(xdrs, &objp->type)) {
43 return (FALSE);
44 }
45 switch (objp->type) {
46 case T_BYTE:
47 if (!xdr_char(xdrs, &objp->arg_value_u.v_byte)) {
48 return (FALSE);
49 }
50 break;
51 case T_WORD:
52 if (!xdr_short(xdrs, &objp->arg_value_u.v_word)) {
53 return (FALSE);
54 }
55 break;
56 case T_INT:
57 if (!xdr_int(xdrs, &objp->arg_value_u.v_int)) {
58 return (FALSE);
59 }
60 break;
61 case T_FLOAT:
62 if (!xdr_float(xdrs, &objp->arg_value_u.v_fp)) {
63 return (FALSE);
64 }
65 break;
66 case T_DOUBLE:
67 if (!xdr_double(xdrs, &objp->arg_value_u.v_dp)) {
68 return (FALSE);
69 }
70 break;
71 case T_UNKNOWN:
72 break;
73 }
74 return (TRUE);
75 }
76
77 bool_t
78 xdr_func_call(xdrs, objp)
79 XDR *xdrs;
80 func_call *objp;
81 {
82 if (!xdr_int(xdrs, &objp->func_addr)) {
83 return (FALSE);
84 }
85 if (!xdr_array(xdrs, (char **)&objp->args.args_val, (u_int *)&objp->args.args_len, MAX_FUNC_ARGS, sizeof(arg_value), xdr_arg_value)) {
86 return (FALSE);
87 }
88 return (TRUE);
89 }
90
91 bool_t
92 xdr_arg_one(xdrs, objp)
93 XDR *xdrs;
94 arg_one *objp;
95 {
96 if (!xdr_string(xdrs, objp, MAX_ARG_LEN)) {
97 return (FALSE);
98 }
99 return (TRUE);
100 }
101
102
103
104
105 bool_t
106 xdr_arg_array(xdrs, objp)
107 XDR *xdrs;
108 arg_array *objp;
109 {
110 if (!xdr_array(xdrs, (char **)&objp->arg_array_val, (u_int *)&objp->arg_array_len, MAX_ARG_CNT, sizeof(arg_one), xdr_arg_one)) {
111 return (FALSE);
112 }
113 return (TRUE);
114 }
115
116 /*********************************************************************
117 *
118 * xdr_EVENT_TYPE -
119 *
120 */
121
122 bool_t xdr_EVENT_TYPE(xdrs, objp)
123 XDR *xdrs;
124 EVENT_TYPE *objp;
125
126 {
127 if (!xdr_enum (xdrs, (enum_t *) objp))
128 return (FALSE);
129 return (TRUE);
130 }
131
132 /*********************************************************************
133 *
134 * xdr_RDB_EVENT -
135 *
136 */
137
138 bool_t xdr_RDB_EVENT (xdrs, objp)
139 XDR *xdrs;
140 RDB_EVENT *objp;
141
142 {
143 if (!xdr_int (xdrs, &objp->status))
144 return (FALSE);
145 if (!xdr_int (xdrs, &objp->taskId))
146 return (FALSE);
147 if (!xdr_EVENT_TYPE (xdrs, &objp->eventType))
148 return (FALSE);
149 if (!xdr_int (xdrs, &objp->sigType))
150 return (FALSE);
151 return (TRUE);
152 }
153
154 /*********************************************************************
155 *
156 * xdr_TASK_START -
157 *
158 */
159
160 bool_t
161 xdr_TASK_START (xdrs, objp)
162 XDR *xdrs;
163 TASK_START *objp;
164
165 {
166 if (!xdr_int (xdrs, &objp->status))
167 return (FALSE);
168 if (!xdr_int (xdrs, &objp->pid))
169 return (FALSE);
170 return (TRUE);
171 }
172
173
174 /*********************************************************************
175 *
176 * xdr_SYMBOL_ADDR -
177 *
178 */
179
180 bool_t
181 xdr_SYMBOL_ADDR (xdrs, objp)
182 XDR *xdrs;
183 SYMBOL_ADDR *objp;
184
185 {
186 if (!xdr_int (xdrs, &objp->status))
187 return (FALSE);
188 if (!xdr_u_int (xdrs, &objp->addr))
189 return (FALSE);
190 return (TRUE);
191 }
192
193 /*********************************************************************
194 *
195 * xdr_SOURCE_STEP -
196 *
197 */
198
199 bool_t
200 xdr_SOURCE_STEP (xdrs, objp)
201 XDR *xdrs;
202 SOURCE_STEP *objp;
203
204 {
205 if (!xdr_int (xdrs, &objp->taskId))
206 return (FALSE);
207 if (!xdr_u_int (xdrs, &objp->startAddr))
208 return (FALSE);
209 if (!xdr_u_int (xdrs, &objp->endAddr))
210 return (FALSE);
211 return (TRUE);
212 }