summaryrefslogtreecommitdiffstats
path: root/c/src/librdbg
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/librdbg')
-rw-r--r--c/src/librdbg/ChangeLog5
-rw-r--r--c/src/librdbg/src/i386/any/remdeb_svc.c120
-rw-r--r--c/src/librdbg/src/m68k/any/remdeb_svc.c120
-rw-r--r--c/src/librdbg/src/powerpc/new_exception_processing/remdeb_svc.c120
4 files changed, 365 insertions, 0 deletions
diff --git a/c/src/librdbg/ChangeLog b/c/src/librdbg/ChangeLog
index 1af78decb0..c353e0afa2 100644
--- a/c/src/librdbg/ChangeLog
+++ b/c/src/librdbg/ChangeLog
@@ -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
diff --git a/c/src/librdbg/src/i386/any/remdeb_svc.c b/c/src/librdbg/src/i386/any/remdeb_svc.c
new file mode 100644
index 0000000000..c76159ea26
--- /dev/null
+++ b/c/src/librdbg/src/i386/any/remdeb_svc.c
@@ -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;
+}
diff --git a/c/src/librdbg/src/m68k/any/remdeb_svc.c b/c/src/librdbg/src/m68k/any/remdeb_svc.c
new file mode 100644
index 0000000000..c76159ea26
--- /dev/null
+++ b/c/src/librdbg/src/m68k/any/remdeb_svc.c
@@ -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;
+}
diff --git a/c/src/librdbg/src/powerpc/new_exception_processing/remdeb_svc.c b/c/src/librdbg/src/powerpc/new_exception_processing/remdeb_svc.c
new file mode 100644
index 0000000000..c76159ea26
--- /dev/null
+++ b/c/src/librdbg/src/powerpc/new_exception_processing/remdeb_svc.c
@@ -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;
+}