Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRanjith Kumaran <ranjith@cygnus.com>2000-03-18 01:48:54 +0300
committerRanjith Kumaran <ranjith@cygnus.com>2000-03-18 01:48:54 +0300
commit03261851a10dd2d6900a0a00a7515a0a46fb5d76 (patch)
tree7c22ac6cbbc99fd5cd1b5426853be8d4fd7bfcf1 /libgloss/debug.h
parentfae4c299f14fc23e2829c8656992eba21f79242a (diff)
20000317 sourceware import
Diffstat (limited to 'libgloss/debug.h')
-rw-r--r--libgloss/debug.h150
1 files changed, 150 insertions, 0 deletions
diff --git a/libgloss/debug.h b/libgloss/debug.h
new file mode 100644
index 000000000..95353418e
--- /dev/null
+++ b/libgloss/debug.h
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 1995, 1996 Cygnus Support
+ *
+ * The authors hereby grant permission to use, copy, modify, distribute,
+ * and license this software and its documentation for any purpose, provided
+ * that existing copyright notices are retained in all copies and that this
+ * notice is included verbatim in any distributions. No written agreement,
+ * license, or royalty fee is required for any of the authorized uses.
+ * Modifications to this software may be copyrighted by their authors
+ * and need not follow the licensing terms described here, provided that
+ * the new terms are clearly indicated on the first page of each file where
+ * they apply.
+ */
+
+static const char hexchars[]="0123456789abcdef";
+
+typedef void (*exception_t)(int); /* pointer to function with int parm */
+
+/*
+ * This is the default function handler to be called with all exceptions.
+ */
+extern exception_t default_trap_hook;
+
+/* this is used to make Unix style signale nukbers to an exception */
+struct trap_info
+{
+ unsigned char tt; /* exception number */
+ unsigned char signo; /* corresponding signal number */
+};
+
+/*
+ * prototypes for the functions in debug.c. As these'll only be used with GCC,
+ * we don't worry about no stinkin K&R comilers.
+ */
+extern void exception_handler (int, unsigned long);
+extern unsigned char *mem2hex(unsigned char *, unsigned char *, int, int);
+extern unsigned char *hex2mem(unsigned char *, unsigned char *, int, int);
+extern void getpacket(unsigned char *);
+extern void putpacket(unsigned char *);
+extern char *make_return_packet(int);
+extern void set_debug_traps();
+extern int computeSignal(int);
+extern char digit2hex(int);
+extern int hex2digit(int);
+extern void debuglogs(int level, char *msg);
+extern int hex2int();
+extern char *int2hex(int);
+extern void gdb_event_loop(int, unsigned long *);
+
+extern char *gdb_read_registers(); /* g - read registers */
+extern char *gdb_write_registers(char *); /* G - write registers */
+extern char *gdb_read_memory(long, int); /* m - read memory */
+extern char *gdb_write_memory(long, int, char *);/* M write memory */
+extern char *gdb_continue(int, long ); /* c - continue */
+extern char *gdb_step(int, long); /* s - step instruction(s) */
+extern char *gdb_kill(); /* k - kill program */
+extern char *gdb_last_signal(); /* ? - last signal */
+extern char *gdb_baudrate(int); /* b - change baud rate */
+extern char *gdb_dump_state(); /* T - dump state */
+extern char *gdb_set_thread(int, int); /* H - set thread */
+extern char *gdb_detach(); /* D - detach */
+extern char *gdb_read_reg(int); /* p - read one register */
+extern char *gdb_write_reg(int, long); /* P - write one register */
+extern char *gdb_exited(); /* W - process exited */
+extern char *gdb_terminated(); /* X - process terminated */
+extern char *gdb_hex(); /* O - hex encoding */
+extern char *gdb_thread_alive(int); /* A - tread alive request */
+extern char *gdb_extended(); /* ! - extended protocol */
+extern char *gdb_debug(); /* d - toggle stub diagnostics */
+extern char *gdb_toggle(); /* unsupported, toggle stub on/off */
+extern char *gdb_reset(); /* r - reset target */
+extern char *gdb_search(long, long, long); /* t - search backwards */
+extern char *gdb_query(char *); /* q - general query */
+extern char *gdb_set(char *); /* Q - set value */
+
+/*
+ * indicate to caller of mem2hex or hex2mem that there has been an error.
+ * 0 means ok, 1 means error
+ */
+extern int mem_err;
+
+/*
+ * indicate whether the debug vectors have been initialized
+ * 0 means not yet, 1 means yep, it's ready.
+ */
+extern int initialized;
+
+/*
+ * 1 means print debugging messages from the target, 0 means be quiet.
+ */
+extern int remote_debug;
+
+/*
+ * Set up the command processing required for GDB
+ */
+
+struct gdb_ops {
+ /*
+ * these functions are the most minimal working subset top get full
+ * functionality for remote debugging
+ */
+ char *(*gdb_read_registers); /* g - read registers */
+ char *(*gdb_write_registers)(char *); /* G - write registers */
+ char *(*gdb_read_memory)(long, int); /* m - read memory */
+ char *(*gdb_write_memory)(long, int, char *);/* M write memory */
+ char *(*gdb_continue)(int, long ); /* c - continue */
+ char *(*gdb_step)(int, long); /* s - step instruction(s) */
+ char *(*gdb_kill); /* k - kill program */
+ char *(*gdb_last_signal); /* ? - last signal */
+ char *(*gdb_baudrate)(int); /* b - change baud rate */
+ char *(*gdb_dump_state); /* T - dump state */
+ /*
+ * these functions are for a more sophisticated target, typically
+ * running a simple RTOS.
+ */
+ char *(*gdb_set_thread)(int, int); /* H - set thread */
+ char *(*gdb_detach); /* D - detach */
+ char *(*gdb_read_reg)(int); /* p - read one register */
+ char *(*gdb_write_reg)(int, long); /* P - write one register */
+ char *(*gdb_exited); /* W - process exited */
+ char *(*gdb_terminated); /* X - process terminated */
+ char *(*gdb_hex); /* O - hex encoding */
+ char *(*gdb_thread_alive)(int); /* A - tread alive request */
+ /* FIXME: not standard yet */
+ char *(*gdb_extended); /* ! - extended protocol */
+ char *(*gdb_debug); /* d - toggle stub diagnostics */
+ char *(*gdb_toggle); /* unsupported, toggle stub on/off */
+ char *(*gdb_reset); /* r - reset target */
+ char *(*gdb_search)(long, long, long); /* t - search backwards */
+ char *(*gdb_query)(char *); /* q - general query */
+ char *(*gdb_set)(long); /* Q - set value */
+};
+
+/*
+ * BUFMAX defines the maximum number of characters in inbound/outbound buffers
+ * at least NUMREGBYTES*2 are needed for register packets
+ */
+#define BUFMAX 2048
+extern char packet_in_buf[BUFMAX];
+extern char packet_out_buf[BUFMAX];
+extern int packet_index;
+
+#define DEBUG(x, y) debuglog(x, y);
+#define set_debug_level(x) remote_debug = x;
+#define OK 0
+#define ERROR -1
+#define ENN(x) "x"
+
+#define MAY_FAULT 1
+#define NO_FAULT 0