forked from Imagelibrary/rtems
2001-05-15 Joel Sherrill <joel@OARcorp.com>
* src/i386/any/remdeb_svc.c, src/m68k/any/remdeb_svc.c, src/powerpc/new_exception_processing/remdeb_svc.c: Readding as I accidentally deleted the incorrectly empty versions.
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2001-05-15 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* src/i386/any/remdeb_svc.c, src/m68k/any/remdeb_svc.c,
|
||||
src/powerpc/new_exception_processing/remdeb_svc.c: Readding as
|
||||
I accidentally deleted the incorrectly empty versions.
|
||||
2002-05-14 Thomas Doerfler <Thomas.Doerfler@imd-systems.de>
|
||||
|
||||
* src/m68k/rdbg_cpu_asm.S: Per PR163, Fix incorrect assumption that
|
||||
|
||||
120
c/src/librdbg/src/i386/any/remdeb_svc.c
Normal file
120
c/src/librdbg/src/i386/any/remdeb_svc.c
Normal file
@@ -0,0 +1,120 @@
|
||||
#include <rpc/types.h>
|
||||
#include <rpc/rpc.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <bsp.h>
|
||||
#include <rdbg/servrpc.h>
|
||||
#include <rdbg/remdeb.h>
|
||||
#define printf(c)
|
||||
/*HEADER_START*/
|
||||
#define RTEMS_PORT 2071
|
||||
#define RTEMS_BACK_PORT 2073
|
||||
/*
|
||||
* Sun request values for the remote ptrace system call
|
||||
*/
|
||||
|
||||
/*
|
||||
* Memory data for read/write text or data. The size is in data. The target
|
||||
* addr is in the addr field.
|
||||
* Be careful before modifying because this value goes into internal
|
||||
* pipes and is allocated on stack too. Pipes and/or the stack could
|
||||
* become too small if this value gets incremented.
|
||||
*/
|
||||
/* now open_connex() routine which establishes a connection to server */
|
||||
#define DEBUGGER_IS_GDB 0x2 /* */
|
||||
/* now close_connex() routine which detaches from server */
|
||||
/* now send_signal() routine which sends signals to processes like kill(2) */
|
||||
/* now wait_info() routine which returns results of polling the wait status
|
||||
of a process/actor. It may return 0 if running, else pid or -1 */
|
||||
/* now ptrace() routine. This matches the Sun UNIX ptrace as well as
|
||||
some additions */
|
||||
/* now define the actual calls we support */
|
||||
const char* names [] = {
|
||||
"NULLPROC", "OPEN_CONNEX", "SEND_SIGNAL", "name3",
|
||||
"name4", "name5", "name6", "name7",
|
||||
"name8", "name9", "CLOSE_CONNEX", "PTRACE",
|
||||
"name12", "WAIT_INFO", "name14", "name15",
|
||||
"name16", "GET_SIGNAL_NAMES", "name18"
|
||||
};
|
||||
|
||||
void
|
||||
remotedeb_2(struct svc_req *rqstp, register SVCXPRT *transp)
|
||||
{
|
||||
union {
|
||||
open_in open_connex_2_arg;
|
||||
signal_in send_signal_2_arg;
|
||||
close_in close_connex_2_arg;
|
||||
ptrace_in ptrace_2_arg;
|
||||
wait_in wait_info_2_arg;
|
||||
} argument;
|
||||
char *result;
|
||||
xdrproc_t _xdr_argument, _xdr_result;
|
||||
char *(*local)(char *, struct svc_req *);
|
||||
|
||||
DPRINTF (("remotedeb_2: %s (%d)\n",
|
||||
(unsigned) rqstp->rq_proc <
|
||||
(unsigned) (sizeof names / sizeof names[0]) ?
|
||||
names [rqstp->rq_proc] : "???",
|
||||
(int) rqstp->rq_proc));
|
||||
|
||||
switch (rqstp->rq_proc) {
|
||||
case NULLPROC:
|
||||
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
|
||||
return;
|
||||
|
||||
case OPEN_CONNEX:
|
||||
_xdr_argument = (xdrproc_t) xdr_open_in;
|
||||
_xdr_result = (xdrproc_t) xdr_open_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) open_connex_2_svc;
|
||||
break;
|
||||
|
||||
case SEND_SIGNAL:
|
||||
_xdr_argument = (xdrproc_t) xdr_signal_in;
|
||||
_xdr_result = (xdrproc_t) xdr_signal_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) send_signal_2_svc;
|
||||
break;
|
||||
|
||||
case CLOSE_CONNEX:
|
||||
_xdr_argument = (xdrproc_t) xdr_close_in;
|
||||
_xdr_result = (xdrproc_t) xdr_void;
|
||||
local = (char *(*)(char *, struct svc_req *)) close_connex_2_svc;
|
||||
break;
|
||||
|
||||
case PTRACE:
|
||||
_xdr_argument = (xdrproc_t) xdr_ptrace_in;
|
||||
_xdr_result = (xdrproc_t) xdr_ptrace_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) ptrace_2_svc;
|
||||
break;
|
||||
|
||||
case WAIT_INFO:
|
||||
_xdr_argument = (xdrproc_t) xdr_wait_in;
|
||||
_xdr_result = (xdrproc_t) xdr_wait_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) wait_info_2_svc;
|
||||
break;
|
||||
|
||||
case GET_SIGNAL_NAMES:
|
||||
_xdr_argument = (xdrproc_t) xdr_void;
|
||||
_xdr_result = (xdrproc_t) xdr_get_signal_names_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) get_signal_names_2_svc;
|
||||
break;
|
||||
|
||||
default:
|
||||
svcerr_noproc (transp);
|
||||
return;
|
||||
}
|
||||
memset ((char *)&argument, 0, sizeof (argument));
|
||||
if (!svc_getargs (transp, _xdr_argument, (caddr_t) &argument)) {
|
||||
svcerr_decode (transp);
|
||||
return;
|
||||
}
|
||||
result = (*local)((char *)&argument, rqstp);
|
||||
if (result != NULL && !svc_sendreply(transp, _xdr_result, result)) {
|
||||
svcerr_systemerr (transp);
|
||||
}
|
||||
if (!svc_freeargs (transp, _xdr_argument, (caddr_t) &argument)) {
|
||||
printf( "unable to free arguments");
|
||||
exit (1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
120
c/src/librdbg/src/m68k/any/remdeb_svc.c
Normal file
120
c/src/librdbg/src/m68k/any/remdeb_svc.c
Normal file
@@ -0,0 +1,120 @@
|
||||
#include <rpc/types.h>
|
||||
#include <rpc/rpc.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <bsp.h>
|
||||
#include <rdbg/servrpc.h>
|
||||
#include <rdbg/remdeb.h>
|
||||
#define printf(c)
|
||||
/*HEADER_START*/
|
||||
#define RTEMS_PORT 2071
|
||||
#define RTEMS_BACK_PORT 2073
|
||||
/*
|
||||
* Sun request values for the remote ptrace system call
|
||||
*/
|
||||
|
||||
/*
|
||||
* Memory data for read/write text or data. The size is in data. The target
|
||||
* addr is in the addr field.
|
||||
* Be careful before modifying because this value goes into internal
|
||||
* pipes and is allocated on stack too. Pipes and/or the stack could
|
||||
* become too small if this value gets incremented.
|
||||
*/
|
||||
/* now open_connex() routine which establishes a connection to server */
|
||||
#define DEBUGGER_IS_GDB 0x2 /* */
|
||||
/* now close_connex() routine which detaches from server */
|
||||
/* now send_signal() routine which sends signals to processes like kill(2) */
|
||||
/* now wait_info() routine which returns results of polling the wait status
|
||||
of a process/actor. It may return 0 if running, else pid or -1 */
|
||||
/* now ptrace() routine. This matches the Sun UNIX ptrace as well as
|
||||
some additions */
|
||||
/* now define the actual calls we support */
|
||||
const char* names [] = {
|
||||
"NULLPROC", "OPEN_CONNEX", "SEND_SIGNAL", "name3",
|
||||
"name4", "name5", "name6", "name7",
|
||||
"name8", "name9", "CLOSE_CONNEX", "PTRACE",
|
||||
"name12", "WAIT_INFO", "name14", "name15",
|
||||
"name16", "GET_SIGNAL_NAMES", "name18"
|
||||
};
|
||||
|
||||
void
|
||||
remotedeb_2(struct svc_req *rqstp, register SVCXPRT *transp)
|
||||
{
|
||||
union {
|
||||
open_in open_connex_2_arg;
|
||||
signal_in send_signal_2_arg;
|
||||
close_in close_connex_2_arg;
|
||||
ptrace_in ptrace_2_arg;
|
||||
wait_in wait_info_2_arg;
|
||||
} argument;
|
||||
char *result;
|
||||
xdrproc_t _xdr_argument, _xdr_result;
|
||||
char *(*local)(char *, struct svc_req *);
|
||||
|
||||
DPRINTF (("remotedeb_2: %s (%d)\n",
|
||||
(unsigned) rqstp->rq_proc <
|
||||
(unsigned) (sizeof names / sizeof names[0]) ?
|
||||
names [rqstp->rq_proc] : "???",
|
||||
(int) rqstp->rq_proc));
|
||||
|
||||
switch (rqstp->rq_proc) {
|
||||
case NULLPROC:
|
||||
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
|
||||
return;
|
||||
|
||||
case OPEN_CONNEX:
|
||||
_xdr_argument = (xdrproc_t) xdr_open_in;
|
||||
_xdr_result = (xdrproc_t) xdr_open_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) open_connex_2_svc;
|
||||
break;
|
||||
|
||||
case SEND_SIGNAL:
|
||||
_xdr_argument = (xdrproc_t) xdr_signal_in;
|
||||
_xdr_result = (xdrproc_t) xdr_signal_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) send_signal_2_svc;
|
||||
break;
|
||||
|
||||
case CLOSE_CONNEX:
|
||||
_xdr_argument = (xdrproc_t) xdr_close_in;
|
||||
_xdr_result = (xdrproc_t) xdr_void;
|
||||
local = (char *(*)(char *, struct svc_req *)) close_connex_2_svc;
|
||||
break;
|
||||
|
||||
case PTRACE:
|
||||
_xdr_argument = (xdrproc_t) xdr_ptrace_in;
|
||||
_xdr_result = (xdrproc_t) xdr_ptrace_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) ptrace_2_svc;
|
||||
break;
|
||||
|
||||
case WAIT_INFO:
|
||||
_xdr_argument = (xdrproc_t) xdr_wait_in;
|
||||
_xdr_result = (xdrproc_t) xdr_wait_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) wait_info_2_svc;
|
||||
break;
|
||||
|
||||
case GET_SIGNAL_NAMES:
|
||||
_xdr_argument = (xdrproc_t) xdr_void;
|
||||
_xdr_result = (xdrproc_t) xdr_get_signal_names_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) get_signal_names_2_svc;
|
||||
break;
|
||||
|
||||
default:
|
||||
svcerr_noproc (transp);
|
||||
return;
|
||||
}
|
||||
memset ((char *)&argument, 0, sizeof (argument));
|
||||
if (!svc_getargs (transp, _xdr_argument, (caddr_t) &argument)) {
|
||||
svcerr_decode (transp);
|
||||
return;
|
||||
}
|
||||
result = (*local)((char *)&argument, rqstp);
|
||||
if (result != NULL && !svc_sendreply(transp, _xdr_result, result)) {
|
||||
svcerr_systemerr (transp);
|
||||
}
|
||||
if (!svc_freeargs (transp, _xdr_argument, (caddr_t) &argument)) {
|
||||
printf( "unable to free arguments");
|
||||
exit (1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
120
c/src/librdbg/src/powerpc/new_exception_processing/remdeb_svc.c
Normal file
120
c/src/librdbg/src/powerpc/new_exception_processing/remdeb_svc.c
Normal file
@@ -0,0 +1,120 @@
|
||||
#include <rpc/types.h>
|
||||
#include <rpc/rpc.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <bsp.h>
|
||||
#include <rdbg/servrpc.h>
|
||||
#include <rdbg/remdeb.h>
|
||||
#define printf(c)
|
||||
/*HEADER_START*/
|
||||
#define RTEMS_PORT 2071
|
||||
#define RTEMS_BACK_PORT 2073
|
||||
/*
|
||||
* Sun request values for the remote ptrace system call
|
||||
*/
|
||||
|
||||
/*
|
||||
* Memory data for read/write text or data. The size is in data. The target
|
||||
* addr is in the addr field.
|
||||
* Be careful before modifying because this value goes into internal
|
||||
* pipes and is allocated on stack too. Pipes and/or the stack could
|
||||
* become too small if this value gets incremented.
|
||||
*/
|
||||
/* now open_connex() routine which establishes a connection to server */
|
||||
#define DEBUGGER_IS_GDB 0x2 /* */
|
||||
/* now close_connex() routine which detaches from server */
|
||||
/* now send_signal() routine which sends signals to processes like kill(2) */
|
||||
/* now wait_info() routine which returns results of polling the wait status
|
||||
of a process/actor. It may return 0 if running, else pid or -1 */
|
||||
/* now ptrace() routine. This matches the Sun UNIX ptrace as well as
|
||||
some additions */
|
||||
/* now define the actual calls we support */
|
||||
const char* names [] = {
|
||||
"NULLPROC", "OPEN_CONNEX", "SEND_SIGNAL", "name3",
|
||||
"name4", "name5", "name6", "name7",
|
||||
"name8", "name9", "CLOSE_CONNEX", "PTRACE",
|
||||
"name12", "WAIT_INFO", "name14", "name15",
|
||||
"name16", "GET_SIGNAL_NAMES", "name18"
|
||||
};
|
||||
|
||||
void
|
||||
remotedeb_2(struct svc_req *rqstp, register SVCXPRT *transp)
|
||||
{
|
||||
union {
|
||||
open_in open_connex_2_arg;
|
||||
signal_in send_signal_2_arg;
|
||||
close_in close_connex_2_arg;
|
||||
ptrace_in ptrace_2_arg;
|
||||
wait_in wait_info_2_arg;
|
||||
} argument;
|
||||
char *result;
|
||||
xdrproc_t _xdr_argument, _xdr_result;
|
||||
char *(*local)(char *, struct svc_req *);
|
||||
|
||||
DPRINTF (("remotedeb_2: %s (%d)\n",
|
||||
(unsigned) rqstp->rq_proc <
|
||||
(unsigned) (sizeof names / sizeof names[0]) ?
|
||||
names [rqstp->rq_proc] : "???",
|
||||
(int) rqstp->rq_proc));
|
||||
|
||||
switch (rqstp->rq_proc) {
|
||||
case NULLPROC:
|
||||
(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
|
||||
return;
|
||||
|
||||
case OPEN_CONNEX:
|
||||
_xdr_argument = (xdrproc_t) xdr_open_in;
|
||||
_xdr_result = (xdrproc_t) xdr_open_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) open_connex_2_svc;
|
||||
break;
|
||||
|
||||
case SEND_SIGNAL:
|
||||
_xdr_argument = (xdrproc_t) xdr_signal_in;
|
||||
_xdr_result = (xdrproc_t) xdr_signal_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) send_signal_2_svc;
|
||||
break;
|
||||
|
||||
case CLOSE_CONNEX:
|
||||
_xdr_argument = (xdrproc_t) xdr_close_in;
|
||||
_xdr_result = (xdrproc_t) xdr_void;
|
||||
local = (char *(*)(char *, struct svc_req *)) close_connex_2_svc;
|
||||
break;
|
||||
|
||||
case PTRACE:
|
||||
_xdr_argument = (xdrproc_t) xdr_ptrace_in;
|
||||
_xdr_result = (xdrproc_t) xdr_ptrace_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) ptrace_2_svc;
|
||||
break;
|
||||
|
||||
case WAIT_INFO:
|
||||
_xdr_argument = (xdrproc_t) xdr_wait_in;
|
||||
_xdr_result = (xdrproc_t) xdr_wait_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) wait_info_2_svc;
|
||||
break;
|
||||
|
||||
case GET_SIGNAL_NAMES:
|
||||
_xdr_argument = (xdrproc_t) xdr_void;
|
||||
_xdr_result = (xdrproc_t) xdr_get_signal_names_out;
|
||||
local = (char *(*)(char *, struct svc_req *)) get_signal_names_2_svc;
|
||||
break;
|
||||
|
||||
default:
|
||||
svcerr_noproc (transp);
|
||||
return;
|
||||
}
|
||||
memset ((char *)&argument, 0, sizeof (argument));
|
||||
if (!svc_getargs (transp, _xdr_argument, (caddr_t) &argument)) {
|
||||
svcerr_decode (transp);
|
||||
return;
|
||||
}
|
||||
result = (*local)((char *)&argument, rqstp);
|
||||
if (result != NULL && !svc_sendreply(transp, _xdr_result, result)) {
|
||||
svcerr_systemerr (transp);
|
||||
}
|
||||
if (!svc_freeargs (transp, _xdr_argument, (caddr_t) &argument)) {
|
||||
printf( "unable to free arguments");
|
||||
exit (1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
Reference in New Issue
Block a user