source: rtems/c/src/librdbg/src/i386/any/remdeb.h @ 0bc2339

4.104.114.84.95
Last change on this file since 0bc2339 was 97f6256, checked in by Joel Sherrill <joel.sherrill@…>, on 02/01/02 at 19:33:15

2002-02-01 Eric Valette <valette@…>

  • So many patches have been posted recently on the mailing list and because we were unable to find correct solution to compile on various linux distros (due to rpcgen incompatibilities), and because the coding style of rdbg was rather inconsistant among various pieces of code, I decided to:

1) make some cleaning regarding global coding style (using

indent + manual edits),

2) incorporate/review the paches send by various people

(S. Holford, T. Strauman),

3) Fix the bug due to varying rpcgen code generation

in remdeb_svc.c,

4) Remove some dead code,
5) Apply a patches enabling to call enterRdbg imediately

after rdbg initialization is done,

NB : the paches is huge but it is mainly due to coding styke chnages.
Only few lines of codes have been really changed and they do not impact
rdbg functionnality (AFAIKT).

  • include/rdbg/servrpc.h, include/rdbg/i386/rdbg_f.h, include/rdbg/m68k/rdbg_f.h, include/rdbg/powerpc/rdbg_f.h, src/_servtgt.c, src/awk.svc, src/excep.c, src/ptrace.c, src/rdbg.c, src/remdeb.x, src/servbkpt.c, src/servcon.c, src/servrpc.c, src/servtgt.c, src/servtsp.c, src/servutil.c, src/i386/excep_f.c, src/i386/rdbg_f.c, src/i386/any/Makefile.am, src/i386/any/remdeb.h, src/i386/any/remdeb_svc.c, src/i386/any/remdeb_xdr.c, src/m68k/excep_f.c, src/m68k/rdbg_f.c, src/m68k/any/Makefile.am, src/m68k/any/remdeb.h, src/m68k/any/remdeb_svc.c, src/m68k/any/remdeb_xdr.c, src/powerpc/excep_f.c, src/powerpc/rdbg_f.c, src/powerpc/new_exception_processing/Makefile.am, src/powerpc/new_exception_processing/remdeb.h, src/powerpc/new_exception_processing/remdeb_svc.c, src/powerpc/new_exception_processing/remdeb_xdr.c: Modified.
  • Property mode set to 100644
File size: 12.5 KB
Line 
1/*
2 * Please do not edit this file.
3 * It was generated using rpcgen.
4 */
5
6#ifndef _REMDEB_H_RPCGEN
7#define _REMDEB_H_RPCGEN
8
9#include <rpc/rpc.h>
10
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#define RTEMS_PORT 2071
17#define RTEMS_BACK_PORT 2073
18#ifndef REMDEB_H
19#define RPCGENSRVNAME(a) a
20
21enum rpc_type {
22        SUNRPC = 0,
23        BADRPCTYPE = 25,
24};
25typedef enum rpc_type rpc_type;
26#define NET_SAFE 1400
27
28struct UDP_MSG {
29        u_char type;
30        u_char msg_num;
31        u_short spec;
32        long pid;
33        u_long context;
34};
35typedef struct UDP_MSG UDP_MSG;
36/*
37 * Sun request values for the remote ptrace system call
38 */
39
40
41enum ptracereq {
42        RPT_TRACEME = 0,
43        RPT_CHILDDONE = 0,
44        RPT_PEEKTEXT = 0 + 1,
45        RPT_PEEKDATA = 0 + 2,
46        RPT_PEEKUSER = 0 + 3,
47        RPT_POKETEXT = 0 + 4,
48        RPT_POKEDATA = 0 + 5,
49        RPT_POKEUSER = 0 + 6,
50        RPT_CONT = 0 + 7,
51        RPT_KILL = 0 + 8,
52        RPT_SINGLESTEP = 0 + 9,
53        RPT_ATTACH = 0 + 10,
54        RPT_DETACH = 0 + 11,
55        RPT_GETREGS = 0 + 12,
56        RPT_SETREGS = 0 + 13,
57        RPT_GETFPREGS = 0 + 14,
58        RPT_SETFPREGS = 0 + 15,
59        RPT_READDATA = 0 + 16,
60        RPT_WRITEDATA = 0 + 17,
61        RPT_READTEXT = 0 + 18,
62        RPT_WRITETEXT = 0 + 19,
63        RPT_GETFPAREGS = 0 + 20,
64        RPT_SETFPAREGS = 0 + 21,
65        RPT_22 = 0 + 22,
66        RPT_23 = 0 + 23,
67        RPT_SYSCALL = 0 + 24,
68        RPT_DUMPCORE = 0 + 25,
69        RPT_26 = 0 + 26,
70        RPT_27 = 0 + 27,
71        RPT_28 = 0 + 28,
72        RPT_GETUCODE = 0 + 29,
73        RPT_GETTARGETTHREAD = 50,
74        RPT_SETTARGETTHREAD = 51,
75        RPT_THREADSUSPEND = 52,
76        RPT_THREADRESUME = 53,
77        RPT_THREADLIST = 54,
78        RPT_GETTHREADNAME = 55,
79        RPT_SETTHREADNAME = 56,
80        RPT_SETTHREADREGS = 57,
81        RPT_GETTHREADREGS = 58,
82        RPT_STEPRANGE = 75,
83        RPT_CONTTO = 76,
84        RPT_SETBREAK = 77,
85        RPT_CLRBREAK = 78,
86        RPT_GETBREAK = 79,
87        RPT_GETNAME = 80,
88        RPT_STOP = 81,
89        RPT_PGETREGS = 82,
90        RPT_PSETREGS = 83,
91        RPT_PSETTHREADREGS = 84,
92        RPT_PGETTHREADREGS = 85,
93};
94typedef enum ptracereq ptracereq;
95
96struct xdr_regs {
97        u_int tabreg[19];
98};
99typedef struct xdr_regs xdr_regs;
100/* now define register macros to apply to xdr_reg struct */
101
102#define GS 0
103#define FS 1
104#define ES 2
105#define DS 3
106#define EDI 4
107#define ESI 5
108#define EBP 6
109#define ESP 7
110#define EBX 8
111#define EDX 9
112#define ECX 10
113#define EAX 11
114#define TRAPNO 12
115#define ERR 13
116#define EIP 14
117#define CS 15
118#define EFL 16
119#define UESP 17
120#define SS 18
121
122#define REG_PC tabreg[EIP] /* PC (eip) register offset */
123#define REG_SP tabreg[UESP] /* SP (uesp) register offset */
124#define REG_FP tabreg[EBP] /* FP (ebp) register offset */
125/* now define the BREAKPOINT mask technique to a long word */
126#define SET_BREAK(l) ((l&0xFFFFFF00) | 0xCC)
127#define IS_BREAK(l) (((l) & 0xFF) == 0xCC)
128#define ORG_BREAK(c,p) (((c) & 0xFFFFFF00) | ((p) & 0xFF))
129#define IS_STEP(regs) (regs.tabreg[TRAPNO] == 1) /* was step and not break */
130#define BREAK_ADJ 1 /* must subtract one from address after bp */
131#define BREAK_SIZE 1 /* Breakpoint occupies one byte */
132#define TARGET_PROC_TYPE 0
133#define MAXDEBUGGEE 150
134#define NAMEMAX 17
135 /*
136   * Memory data for read/write text or data. The size is in data. The target
137   * addr is in the addr field.
138   * Be careful before modifying because this value goes into internal
139   * pipes and is allocated on stack too. Pipes and/or the stack could
140   * become too small if this value gets incremented.
141   */
142#define MEM_DATA_MAX 256
143
144struct xdr_mem {
145        u_long addr;
146        u_int dataNb;
147        u_char data[MEM_DATA_MAX];
148};
149typedef struct xdr_mem xdr_mem;
150
151enum break_type {
152        BRKT_NONE = 0,
153        BRKT_INSTR = 1,
154        BRKT_READ = 2,
155        BRKT_WRITE = 3,
156        BRKT_ACCESS = 4,
157        BRKT_EXEC = 5,
158        BRKT_OS_CALL = 6,
159        BRKT_OS_SWITCH = 7,
160        BRKT_STEPEMUL = 8,
161};
162typedef enum break_type break_type;
163#define MAX_THRD_BRK 4
164
165struct xdr_break {
166        u_char type;
167        u_char thread_spec;
168        u_short handle;
169        u_long ee_loc;
170        u_long ee_type;
171        u_short length;
172        u_char pass_count;
173        u_char curr_pass;
174        u_long thread_list[MAX_THRD_BRK];
175};
176typedef struct xdr_break xdr_break;
177#define UTHREAD_MAX 64
178#define THREADNAMEMAX 16
179
180typedef char *thread_name;
181
182struct KernThread {
183        u_int threadLi;
184};
185typedef struct KernThread KernThread;
186typedef KernThread *ptThreadList;
187
188struct thread_list {
189        u_int nbThread;
190        ptThreadList threads;
191};
192typedef struct thread_list thread_list;
193
194struct ptrace_addr_data_in {
195        ptracereq req;
196        union {
197                xdr_regs regs;
198                struct {
199                        u_int pregs_len;
200                        u_int *pregs_val;
201                } pregs;
202                thread_name name;
203                xdr_mem mem;
204                xdr_break breakp;
205                u_int address;
206        } ptrace_addr_data_in_u;
207};
208typedef struct ptrace_addr_data_in ptrace_addr_data_in;
209
210struct ptrace_addr_data_out {
211        ptracereq req;
212        union {
213                xdr_regs regs;
214                struct {
215                        u_int pregs_len;
216                        u_int *pregs_val;
217                } pregs;
218                thread_list threads;
219                thread_name name;
220                xdr_mem mem;
221                xdr_break breakp;
222                u_int addr;
223        } ptrace_addr_data_out_u;
224};
225typedef struct ptrace_addr_data_out ptrace_addr_data_out;
226
227typedef struct {
228        u_int CHAR_DATA_len;
229        char *CHAR_DATA_val;
230} CHAR_DATA;
231
232typedef char *one_arg;
233 /* now open_connex() routine which establishes a connection to server */
234
235enum debug_type {
236        DEBTYP_PROCESS = 0,
237        DEBTYP_C_ACTOR = 1,
238        DEBTYP_KERNEL = 2,
239        DEBTYP_OTHER = 3,
240};
241typedef enum debug_type debug_type;
242#define DEBUGGER_IS_GDB 0x2 /* */
243
244struct open_in {
245        u_char back_port[16];
246        u_short debug_type;
247        u_short flags;
248        u_char destination[16];
249        one_arg user_name;
250};
251typedef struct open_in open_in;
252
253struct open_out {
254        u_long port;
255        u_int pad[4];
256        u_int fp;
257        u_char cmd_table_num;
258        u_char cmd_table_vers;
259        u_short server_vers;
260};
261typedef struct open_out open_out;
262 /* now close_connex() routine which detaches from server */
263
264enum close_control {
265        CLOSE_IGNORE = 0,
266        CLOSE_KILL = 1,
267        CLOSE_DETACH = 2,
268};
269typedef enum close_control close_control;
270
271struct close_in {
272        close_control control;
273};
274typedef struct close_in close_in;
275 /* now send_signal() routine which sends signals to processes like kill(2) */
276
277struct signal_in {
278        int pid;
279        int sig;
280};
281typedef struct signal_in signal_in;
282
283struct signal_out {
284        int kill_return;
285        int errNo;
286};
287typedef struct signal_out signal_out;
288 /* now wait_info() routine which returns results of polling the wait status
289        of a process/actor. It may return 0 if running, else pid or -1 */
290
291enum stop_code {
292        STOP_ERROR = 0,
293        STOP_NONE = 1,
294        STOP_UNKNOWN = 2,
295        STOP_BREAK = 3,
296        STOP_STEP = 4,
297        STOP_SIGNAL = 5,
298        STOP_TERM_EXIT = 6,
299        STOP_TERM_SIG = 7,
300        STOP_DETACHED = 8,
301        STOP_KILLED = 9,
302        STOP_SPAWN_FAILED = 10,
303};
304typedef enum stop_code stop_code;
305
306struct wait_in {
307        int pid;
308};
309typedef struct wait_in wait_in;
310
311struct wait_out {
312        int wait_return;
313        int errNo;
314        int status;
315        stop_code reason;
316        int handle;
317        u_long PC;
318        u_long SP;
319        u_long FP;
320        u_long thread;
321};
322typedef struct wait_out wait_out;
323 /* now ptrace() routine. This matches the Sun UNIX ptrace as well as
324        some additions */
325#define PTRFLG_FORCE 1
326#define PTRFLG_NON_OWNER 2
327#define PTRFLG_FREE 4
328#define PTRDET_UNOWN 0x100
329
330struct ptrace_in {
331        int pid;
332        ptrace_addr_data_in addr;
333        u_int data;
334        u_int flags;
335};
336typedef struct ptrace_in ptrace_in;
337
338struct ptrace_out {
339        ptrace_addr_data_out addr;
340        int result;
341        int errNo;
342};
343typedef struct ptrace_out ptrace_out;
344
345struct one_symbol {
346        char *symbolName;
347        long symbolValue;
348};
349typedef struct one_symbol one_symbol;
350
351typedef struct {
352        u_int all_symbols_len;
353        one_symbol *all_symbols_val;
354} all_symbols;
355
356struct get_global_symbols_out {
357        all_symbols symbols;
358};
359typedef struct get_global_symbols_out get_global_symbols_out;
360
361struct get_text_data_in {
362        int pid;
363        char *actorName;
364};
365typedef struct get_text_data_in get_text_data_in;
366
367struct get_text_data_out {
368        int result;
369        int errNo;
370        u_long textStart;
371        u_long textSize;
372        u_long dataStart;
373        u_long dataSize;
374};
375typedef struct get_text_data_out get_text_data_out;
376
377struct one_signal {
378        u_int number;
379        char *name;
380};
381typedef struct one_signal one_signal;
382
383typedef struct {
384        u_int all_signals_len;
385        one_signal *all_signals_val;
386} all_signals;
387
388struct get_signal_names_out {
389        all_signals signals;
390};
391typedef struct get_signal_names_out get_signal_names_out;
392 /* now define the actual calls we support */
393#define REMDEB_H
394#endif
395
396#define REMOTEDEB 0x20000fff
397#define REMOTEVERS 2
398
399#if defined(__STDC__) || defined(__cplusplus)
400#define OPEN_CONNEX 1
401extern  open_out * open_connex_2(open_in *, CLIENT *);
402extern  open_out * open_connex_2_svc(open_in *, struct svc_req *);
403#define SEND_SIGNAL 2
404extern  signal_out * send_signal_2(signal_in *, CLIENT *);
405extern  signal_out * send_signal_2_svc(signal_in *, struct svc_req *);
406#define CLOSE_CONNEX 10
407extern  void * close_connex_2(close_in *, CLIENT *);
408extern  void * close_connex_2_svc(close_in *, struct svc_req *);
409#define PTRACE 11
410extern  ptrace_out * ptrace_2(ptrace_in *, CLIENT *);
411extern  ptrace_out * ptrace_2_svc(ptrace_in *, struct svc_req *);
412#define WAIT_INFO 13
413extern  wait_out * wait_info_2(wait_in *, CLIENT *);
414extern  wait_out * wait_info_2_svc(wait_in *, struct svc_req *);
415#define GET_SIGNAL_NAMES 17
416extern  get_signal_names_out * get_signal_names_2(void *, CLIENT *);
417extern  get_signal_names_out * get_signal_names_2_svc(void *, struct svc_req *);
418extern int remotedeb_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
419
420#else /* K&R C */
421#define OPEN_CONNEX 1
422extern  open_out * open_connex_2();
423extern  open_out * open_connex_2_svc();
424#define SEND_SIGNAL 2
425extern  signal_out * send_signal_2();
426extern  signal_out * send_signal_2_svc();
427#define CLOSE_CONNEX 10
428extern  void * close_connex_2();
429extern  void * close_connex_2_svc();
430#define PTRACE 11
431extern  ptrace_out * ptrace_2();
432extern  ptrace_out * ptrace_2_svc();
433#define WAIT_INFO 13
434extern  wait_out * wait_info_2();
435extern  wait_out * wait_info_2_svc();
436#define GET_SIGNAL_NAMES 17
437extern  get_signal_names_out * get_signal_names_2();
438extern  get_signal_names_out * get_signal_names_2_svc();
439extern int remotedeb_2_freeresult ();
440#endif /* K&R C */
441
442/* the xdr functions */
443
444#if defined(__STDC__) || defined(__cplusplus)
445extern  bool_t xdr_rpc_type (XDR *, rpc_type*);
446extern  bool_t xdr_UDP_MSG (XDR *, UDP_MSG*);
447extern  bool_t xdr_ptracereq (XDR *, ptracereq*);
448extern  bool_t xdr_xdr_regs (XDR *, xdr_regs*);
449extern  bool_t xdr_xdr_mem (XDR *, xdr_mem*);
450extern  bool_t xdr_break_type (XDR *, break_type*);
451extern  bool_t xdr_xdr_break (XDR *, xdr_break*);
452extern  bool_t xdr_thread_name (XDR *, thread_name*);
453extern  bool_t xdr_KernThread (XDR *, KernThread*);
454extern  bool_t xdr_thread_list (XDR *, thread_list*);
455extern  bool_t xdr_ptrace_addr_data_in (XDR *, ptrace_addr_data_in*);
456extern  bool_t xdr_ptrace_addr_data_out (XDR *, ptrace_addr_data_out*);
457extern  bool_t xdr_CHAR_DATA (XDR *, CHAR_DATA*);
458extern  bool_t xdr_one_arg (XDR *, one_arg*);
459extern  bool_t xdr_debug_type (XDR *, debug_type*);
460extern  bool_t xdr_open_in (XDR *, open_in*);
461extern  bool_t xdr_open_out (XDR *, open_out*);
462extern  bool_t xdr_close_control (XDR *, close_control*);
463extern  bool_t xdr_close_in (XDR *, close_in*);
464extern  bool_t xdr_signal_in (XDR *, signal_in*);
465extern  bool_t xdr_signal_out (XDR *, signal_out*);
466extern  bool_t xdr_stop_code (XDR *, stop_code*);
467extern  bool_t xdr_wait_in (XDR *, wait_in*);
468extern  bool_t xdr_wait_out (XDR *, wait_out*);
469extern  bool_t xdr_ptrace_in (XDR *, ptrace_in*);
470extern  bool_t xdr_ptrace_out (XDR *, ptrace_out*);
471extern  bool_t xdr_one_symbol (XDR *, one_symbol*);
472extern  bool_t xdr_all_symbols (XDR *, all_symbols*);
473extern  bool_t xdr_get_global_symbols_out (XDR *, get_global_symbols_out*);
474extern  bool_t xdr_get_text_data_in (XDR *, get_text_data_in*);
475extern  bool_t xdr_get_text_data_out (XDR *, get_text_data_out*);
476extern  bool_t xdr_one_signal (XDR *, one_signal*);
477extern  bool_t xdr_all_signals (XDR *, all_signals*);
478extern  bool_t xdr_get_signal_names_out (XDR *, get_signal_names_out*);
479
480#else /* K&R C */
481extern bool_t xdr_rpc_type ();
482extern bool_t xdr_UDP_MSG ();
483extern bool_t xdr_ptracereq ();
484extern bool_t xdr_xdr_regs ();
485extern bool_t xdr_xdr_mem ();
486extern bool_t xdr_break_type ();
487extern bool_t xdr_xdr_break ();
488extern bool_t xdr_thread_name ();
489extern bool_t xdr_KernThread ();
490extern bool_t xdr_thread_list ();
491extern bool_t xdr_ptrace_addr_data_in ();
492extern bool_t xdr_ptrace_addr_data_out ();
493extern bool_t xdr_CHAR_DATA ();
494extern bool_t xdr_one_arg ();
495extern bool_t xdr_debug_type ();
496extern bool_t xdr_open_in ();
497extern bool_t xdr_open_out ();
498extern bool_t xdr_close_control ();
499extern bool_t xdr_close_in ();
500extern bool_t xdr_signal_in ();
501extern bool_t xdr_signal_out ();
502extern bool_t xdr_stop_code ();
503extern bool_t xdr_wait_in ();
504extern bool_t xdr_wait_out ();
505extern bool_t xdr_ptrace_in ();
506extern bool_t xdr_ptrace_out ();
507extern bool_t xdr_one_symbol ();
508extern bool_t xdr_all_symbols ();
509extern bool_t xdr_get_global_symbols_out ();
510extern bool_t xdr_get_text_data_in ();
511extern bool_t xdr_get_text_data_out ();
512extern bool_t xdr_one_signal ();
513extern bool_t xdr_all_signals ();
514extern bool_t xdr_get_signal_names_out ();
515
516#endif /* K&R C */
517
518#ifdef __cplusplus
519}
520#endif
521
522#endif /* !_REMDEB_H_RPCGEN */
Note: See TracBrowser for help on using the repository browser.