This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Add support for target switches in simulator
- From: Nick Clifton <nickc at cambridge dot redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Cc: Richard dot Earnshaw at arm dot com
- Date: 16 May 2002 17:16:34 +0100
- Subject: Add support for target switches in simulator
- References: <200205091111.MAA22264@cam-mail2.cambridge.arm.com>
Hi Guys,
I would like permission to apply the following patch. It adds the
ability for simulator backends to parse their own command line
switches, thus creating target specific simulator options.
I would like this facility in order to be able to add a new switch
to the ARM simulator - a switch to select which set(s) of SWI
emulations it should perform.
I have not worked out how this feature would be accessed from GDB.
My guess is that the switches could be added to the arguments passed
via sim_open(), but how would a GDB user tell GDB to add these
switches ?
Cheers
Nick
sim/common/ChangeLog
2002-05-16 Nick Clifton <nickc@cambridge.redhat.com>
* run.c (main): Call sim_target_parse_command_line if
SIM_TARGET_SWITCHES is defined.
(usage): Call sim_target_display_usage if SIM_TARGET_SWITCHES
is defined.
include/ChangeLog
2002-05-16 Nick Clifton <nickc@cambridge.redhat.com>
* remote-sim.h: Provide prototypes for
sim_target_parse_command_line and sim_target_display_usage
if SIM_TARGET_SWITCHES is defined.
Index: sim/common/run.c
===================================================================
RCS file: /cvs/src/src/sim/common/run.c,v
retrieving revision 1.7
diff -c -3 -p -w -r1.7 run.c
*** sim/common/run.c 21 Dec 2001 00:47:18 -0000 1.7
--- sim/common/run.c 16 May 2002 16:04:36 -0000
*************** main (ac, av)
*** 111,116 ****
--- 111,120 ----
default_callback.init (&default_callback);
sim_set_callbacks (&default_callback);
+ #ifdef SIM_TARGET_SWITCHES
+ ac = sim_target_parse_command_line (ac, av);
+ #endif
+
/* FIXME: This is currently being rewritten to have each simulator
do all argv processing. */
*************** usage ()
*** 334,338 ****
--- 338,346 ----
fprintf (stderr, "\n");
fprintf (stderr, "program args Arguments to pass to simulated program.\n");
fprintf (stderr, " Note: Very few simulators support this.\n");
+ #ifdef SIM_TARGET_SWITCHES
+ fprintf (stderr, "\nTarget specific options:\n");
+ sim_target_display_usage ();
+ #endif
exit (1);
}
Index: include/remote-sim.h
===================================================================
RCS file: /cvs/src/src/include/remote-sim.h,v
retrieving revision 1.4
diff -c -3 -p -w -r1.4 remote-sim.h
*** include/remote-sim.h 14 Mar 2001 02:27:43 -0000 1.4
--- include/remote-sim.h 16 May 2002 16:07:49 -0000
*************** void sim_set_profile_size PARAMS ((int n
*** 346,351 ****
--- 346,362 ----
multi-cpu simulators. */
void sim_kill PARAMS ((SIM_DESC sd));
+
+ #ifdef SIM_TARGET_SWITCHES
+ /* Parse the command line, extracting any target specific switches
+ before the generic simulator code gets a chance to complain
+ about them. Returns the adjusted value of argc. */
+ int sim_target_parse_command_line PARAMS ((int, char **));
+
+ /* Display a list of target specific switches supported by this
+ target. */
+ void sim_target_display_usage PARAMS ((void));
+ #endif
#ifdef __cplusplus
}