xref: /openbsd-src/gnu/usr.bin/binutils/gdb/vx-share/xdr_ptrace.h (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1e93f7393Sniklas /* xdr_ptrace.h - xdr header for remote ptrace structures */
2e93f7393Sniklas 
3*b725ae77Skettenis /*  Copyright 1992, 1998 Free Software Foundation, Inc.
4e93f7393Sniklas 
5e93f7393Sniklas     This code was donated by Wind River Systems, Inc. */
6e93f7393Sniklas 
7e93f7393Sniklas /*
8e93f7393Sniklas modification history
9e93f7393Sniklas --------------------
10e93f7393Sniklas 01b,25may91,maf  now uses counted bytes struct to transfer registers;
11e93f7393Sniklas 		   removed references to old xdr_regs functions.
12e93f7393Sniklas 		 removed includes of "xdr_regs.h" and "reg.h".
13e93f7393Sniklas 01a,05jun90,llk  extracted from xdr_ptrace.h.
14e93f7393Sniklas */
15e93f7393Sniklas 
16e93f7393Sniklas 
17e93f7393Sniklas /*
18e93f7393Sniklas  *  Counted byte structure used by READ/WRITE TEXT/DATA
19e93f7393Sniklas  *  and GET/SET REGS/FPREGS
20e93f7393Sniklas  */
21e93f7393Sniklas struct c_bytes {
22e93f7393Sniklas 	u_int	len;
23e93f7393Sniklas 	caddr_t	bytes;
24e93f7393Sniklas };
25e93f7393Sniklas typedef struct c_bytes C_bytes;
26e93f7393Sniklas 
27e93f7393Sniklas /*
28e93f7393Sniklas  * enum for discriminated union ptrace_info
29e93f7393Sniklas  */
30e93f7393Sniklas enum ptype {
31e93f7393Sniklas 	NOINFO = 0,		/* no additional infomation	*/
32e93f7393Sniklas 	DATA = 1		/* c_bytes */
33e93f7393Sniklas };
34e93f7393Sniklas typedef enum ptype ptype;
35e93f7393Sniklas 
36e93f7393Sniklas /*
37e93f7393Sniklas  * discrimnated union for passing additional data to be
38e93f7393Sniklas  * written to the debugged process.
39e93f7393Sniklas  */
40e93f7393Sniklas struct ptrace_info {
41e93f7393Sniklas 	ptype	ttype;
42e93f7393Sniklas 	caddr_t	more_data;
43e93f7393Sniklas };
44e93f7393Sniklas typedef struct ptrace_info Ptrace_info;
45e93f7393Sniklas 
46e93f7393Sniklas /*
47e93f7393Sniklas  * structure passed to server on all remote ptrace calls
48e93f7393Sniklas  */
49e93f7393Sniklas struct rptrace {
50e93f7393Sniklas 	int 	pid;
51e93f7393Sniklas 	int 	data;
52e93f7393Sniklas 	int 	addr;	/* FIX! this really should be caddr_t or something */
53e93f7393Sniklas 	Ptrace_info	info;
54e93f7393Sniklas };
55e93f7393Sniklas typedef struct rptrace Rptrace;
56e93f7393Sniklas 
57e93f7393Sniklas /*
58e93f7393Sniklas  * structure returned by server on all remote ptrace calls
59e93f7393Sniklas  */
60*b725ae77Skettenis /* This used to have a field called errno, but that fails on hosts which
61*b725ae77Skettenis    define errno to be a macro, so it was changed to errno_num.  */
62e93f7393Sniklas struct ptrace_return {
63e93f7393Sniklas 	int status;
64*b725ae77Skettenis 	int errno_num;
65e93f7393Sniklas 	Ptrace_info	info;
66e93f7393Sniklas };
67e93f7393Sniklas typedef struct ptrace_return Ptrace_return;
68e93f7393Sniklas 
69e93f7393Sniklas bool_t xdr_c_bytes();
70e93f7393Sniklas bool_t xdr_ptrace_info();
71e93f7393Sniklas bool_t xdr_rptrace();
72e93f7393Sniklas bool_t xdr_ptrace_return();
73