This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Target-specific command logging facility
- From: "Maciej W. Rozycki" <macro at mips dot com>
- To: gdb-patches at sourceware dot org
- Cc: "Maciej W. Rozycki" <macro at linux-mips dot org>
- Date: Thu, 29 Nov 2007 15:44:23 +0000 (GMT)
- Subject: Target-specific command logging facility
Hello,
In preparation for submitting support for the MDI target I propose the
following enhancement to the command logging facility. Right now
serial_log_command() is called unconditionally which does nothing if the
serial target subsystem is not being used.
I propose to change this behaviour and provide a (*to_log_command)()
member of the target vector so that the callee may be selected as
appropriate. The change below is meant to preserve the current semantics
-- all the currently supported targets that make use of the serial target
subsystem initialise the new member to serial_log_command().
Tested using the mipsisa32-sde-elf target, with the mips-sim-sde32/-EB
and mips-sim-sde32/-EL boards with no regressions.
2007-11-29 Maciej W. Rozycki <macro@mips.com>
* target.c (update_current_target): Inherit to_log_command.
* target.h (struct target_ops). Add to_log_command.
(target_log_command): New macro.
* top.c (execute_command): Call target_log_command() if available
rather than serial_log_command().
* monitor.c (init_base_monitor_ops): Initialize to_log_command.
* remote-m32r-sdi.c (init_m32r_ops): Likewise.
* remote-mips.c (_initialize_remote_mips): Likewise.
* remote.c (init_remote_ops): Likewise.
OK to apply?
Maciej
14616.diff
Index: binutils-quilt/src/gdb/target.h
===================================================================
--- binutils-quilt.orig/src/gdb/target.h 2007-04-16 13:04:50.000000000 +0100
+++ binutils-quilt/src/gdb/target.h 2007-04-16 13:06:27.000000000 +0100
@@ -402,6 +402,7 @@
int);
struct exception_event_record *(*to_get_current_exception_event) (void);
char *(*to_pid_to_exec_file) (int pid);
+ void (*to_log_command) (const char *);
enum strata to_stratum;
int to_has_all_memory;
int to_has_memory;
@@ -1201,6 +1202,10 @@
extern const struct target_desc *target_read_description (struct target_ops *);
+/* Command logging facility. */
+
+#define target_log_command current_target.to_log_command
+
/* Routines for maintenance of the target structures...
add_target: Add a target to the list of all possible targets.
Index: binutils-quilt/src/gdb/remote-m32r-sdi.c
===================================================================
--- binutils-quilt.orig/src/gdb/remote-m32r-sdi.c 2007-04-16 12:14:49.000000000 +0100
+++ binutils-quilt/src/gdb/remote-m32r-sdi.c 2007-04-16 13:06:27.000000000 +0100
@@ -1595,6 +1595,7 @@
m32r_ops.to_create_inferior = m32r_create_inferior;
m32r_ops.to_mourn_inferior = m32r_mourn_inferior;
m32r_ops.to_stop = m32r_stop;
+ m32r_ops.to_log_command = serial_log_command;
m32r_ops.to_stratum = process_stratum;
m32r_ops.to_has_all_memory = 1;
m32r_ops.to_has_memory = 1;
Index: binutils-quilt/src/gdb/remote-mips.c
===================================================================
--- binutils-quilt.orig/src/gdb/remote-mips.c 2007-04-16 13:04:50.000000000 +0100
+++ binutils-quilt/src/gdb/remote-mips.c 2007-04-16 13:06:27.000000000 +0100
@@ -3321,6 +3321,7 @@
mips_ops.to_load = mips_load;
mips_ops.to_create_inferior = mips_create_inferior;
mips_ops.to_mourn_inferior = mips_mourn_inferior;
+ mips_ops.to_log_command = serial_log_command;
mips_ops.to_stratum = process_stratum;
mips_ops.to_has_all_memory = 1;
mips_ops.to_has_memory = 1;
Index: binutils-quilt/src/gdb/monitor.c
===================================================================
--- binutils-quilt.orig/src/gdb/monitor.c 2007-04-16 12:14:49.000000000 +0100
+++ binutils-quilt/src/gdb/monitor.c 2007-04-16 13:06:27.000000000 +0100
@@ -2229,6 +2229,7 @@
monitor_ops.to_mourn_inferior = monitor_mourn_inferior;
monitor_ops.to_stop = monitor_stop;
monitor_ops.to_rcmd = monitor_rcmd;
+ monitor_ops.to_log_command = serial_log_command;
monitor_ops.to_stratum = process_stratum;
monitor_ops.to_has_all_memory = 1;
monitor_ops.to_has_memory = 1;
Index: binutils-quilt/src/gdb/top.c
===================================================================
--- binutils-quilt.orig/src/gdb/top.c 2007-04-16 12:14:49.000000000 +0100
+++ binutils-quilt/src/gdb/top.c 2007-04-16 13:06:27.000000000 +0100
@@ -387,7 +387,8 @@
if (p == NULL)
return;
- serial_log_command (p);
+ if (target_log_command)
+ target_log_command (p);
while (*p == ' ' || *p == '\t')
p++;
Index: binutils-quilt/src/gdb/remote.c
===================================================================
--- binutils-quilt.orig/src/gdb/remote.c 2007-04-16 13:04:49.000000000 +0100
+++ binutils-quilt/src/gdb/remote.c 2007-04-16 13:06:27.000000000 +0100
@@ -6153,6 +6153,7 @@
remote_ops.to_stop = remote_stop;
remote_ops.to_xfer_partial = remote_xfer_partial;
remote_ops.to_rcmd = remote_rcmd;
+ remote_ops.to_log_command = serial_log_command;
remote_ops.to_get_thread_local_address = remote_get_thread_local_address;
remote_ops.to_stratum = process_stratum;
remote_ops.to_has_all_memory = 1;
Index: binutils-quilt/src/gdb/target.c
===================================================================
--- binutils-quilt.orig/src/gdb/target.c 2007-04-16 13:04:51.000000000 +0100
+++ binutils-quilt/src/gdb/target.c 2007-04-16 13:06:27.000000000 +0100
@@ -451,6 +451,7 @@
INHERIT (to_enable_exception_callback, t);
INHERIT (to_get_current_exception_event, t);
INHERIT (to_pid_to_exec_file, t);
+ INHERIT (to_log_command, t);
INHERIT (to_stratum, t);
INHERIT (to_has_all_memory, t);
INHERIT (to_has_memory, t);