aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/target.c23
-rw-r--r--gdb/target.h11
3 files changed, 39 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0eb69b1..df444e8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+1999-01-15 Fernando Nasser <fnasser@totem.to.cygnus.com>
+
+ * target.h: added entry for target queries (to_query)
+ target.c: ditto.
+
Thu Jan 14 18:29:17 1999 David Taylor <taylor@texas.cygnus.com>
start-sanitize-carp start-sanitize-vr4xxx
diff --git a/gdb/target.c b/gdb/target.c
index 1e729fa..a13bbc3 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -172,6 +172,9 @@ debug_to_thread_alive PARAMS ((int));
static void
debug_to_stop PARAMS ((void));
+static int
+debug_to_query PARAMS ((char, char *, char *, int *));
+
/* Pointer to array of target architecture structures; the size of the
array; the current index into the array; the allocated size of the
array. */
@@ -237,6 +240,7 @@ struct target_ops dummy_target = {
0, /* to_notice_signals */
0, /* to_thread_alive */
0, /* to_stop */
+ 0, /* to_query */
NULL, /* to_enable_exception_callback */
NULL, /* to_get_current_exception_event */
NULL, /* to_pid_to_exec_file */
@@ -502,6 +506,7 @@ cleanup_target (t)
de_fault (to_notice_signals, (void (*) PARAMS((int))) target_ignore);
de_fault (to_thread_alive, (int (*) PARAMS((int))) target_ignore);
de_fault (to_stop, (void (*) PARAMS((void))) target_ignore);
+ de_fault (to_query, (int (*) PARAMS((char, char*, char *, int *))) target_ignore);
de_fault (to_enable_exception_callback, (struct symtab_and_line * (*) PARAMS((enum exception_event_kind, int))) nosupport_runtime);
de_fault (to_get_current_exception_event, (struct exception_event_record * (*) PARAMS((void))) nosupport_runtime);
@@ -583,6 +588,7 @@ update_current_target ()
INHERIT (to_notice_signals, t);
INHERIT (to_thread_alive, t);
INHERIT (to_stop, t);
+ INHERIT (to_query, t);
INHERIT (to_enable_exception_callback, t);
INHERIT (to_get_current_exception_event, t);
INHERIT (to_pid_to_exec_file, t);
@@ -2470,6 +2476,22 @@ debug_to_stop ()
fprintf_unfiltered (gdb_stderr, "target_stop ()\n");
}
+static int
+debug_to_query (type, req, resp, siz)
+ char type;
+ char *req;
+ char *resp;
+ int *siz;
+{
+ int retval;
+
+ retval = debug_target.to_query (type, req, resp, siz);
+
+ fprintf_unfiltered (stderr, "target_query (%c, %s, %s, %d) = %d\n", type, req, resp, *siz, retval);
+
+ return retval;
+}
+
static struct symtab_and_line *
debug_to_enable_exception_callback (kind, enable)
enum exception_event_kind kind;
@@ -2572,6 +2594,7 @@ setup_target_debug ()
current_target.to_notice_signals = debug_to_notice_signals;
current_target.to_thread_alive = debug_to_thread_alive;
current_target.to_stop = debug_to_stop;
+ current_target.to_query = debug_to_query;
current_target.to_enable_exception_callback = debug_to_enable_exception_callback;
current_target.to_get_current_exception_event = debug_to_get_current_exception_event;
current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
diff --git a/gdb/target.h b/gdb/target.h
index c9d6b6e..7f6a2c5 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -355,6 +355,7 @@ struct target_ops
void (*to_notice_signals) PARAMS ((int pid));
int (*to_thread_alive) PARAMS ((int pid));
void (*to_stop) PARAMS ((void));
+ int (*to_query) PARAMS ((char, char *, char *, int *));
struct symtab_and_line * (*to_enable_exception_callback) PARAMS ((enum exception_event_kind, int));
struct exception_event_record * (*to_get_current_exception_event) PARAMS ((void));
char * (*to_pid_to_exec_file) PARAMS ((int pid));
@@ -888,6 +889,16 @@ print_section_info PARAMS ((struct target_ops *, bfd *));
#define target_stop current_target.to_stop
+/* Queries the target side for some information. The first argument is a
+ letter specifying the type of the query, which is used to determine who
+ should process it. The second argument is a string that specifies which
+ information is desired and the third is a buffer that carries back the
+ response from the target side. The fourth parameter is the size of the
+ output buffer supplied. */
+
+#define target_query(query_type, query, resp_buffer, bufffer_size) \
+ (*current_target.to_query) (query_type, query, resp_buffer, bufffer_size)
+
/* Get the symbol information for a breakpointable routine called when
an exception event occurs.
Intended mainly for C++, and for those