This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] sim: add --model-info helper option


There is an architecture-info flag for listing possible arch values, but
there is on equivalent for listing possible model values.  So add the
equivalent for models.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>

2010-04-16  Mike Frysinger  <vapier@gentoo.org>

	* sim-model.c (OPTION_MODEL): Convert to enum.
	(OPTION_MODEL_INFO): New enum.
	(model_options): Add model-info/info-model entries.
	(model_option_handler): Handle OPTION_MODEL_INFO.
---
 sim/common/sim-model.c |   29 ++++++++++++++++++++++++++++-
 1 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/sim/common/sim-model.c b/sim/common/sim-model.c
index ddcb2de..5e7284c 100644
--- a/sim/common/sim-model.c
+++ b/sim/common/sim-model.c
@@ -32,12 +32,23 @@ static DECLARE_OPTION_HANDLER (model_option_handler);
 
 static MODULE_INIT_FN sim_model_init;
 
-#define OPTION_MODEL (OPTION_START + 0)
+enum {
+  OPTION_MODEL = OPTION_START,
+  OPTION_MODEL_INFO,
+};
 
 static const OPTION model_options[] = {
   { {"model", required_argument, NULL, OPTION_MODEL},
       '\0', "MODEL", "Specify model to simulate",
       model_option_handler, NULL },
+
+  { {"model-info", no_argument, NULL, OPTION_MODEL_INFO},
+      '\0', NULL, "List selectable models",
+      model_option_handler, NULL },
+  { {"info-model", no_argument, NULL, OPTION_MODEL_INFO},
+      '\0', NULL, "List selectable models",
+      model_option_handler, NULL },
+
   { {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL, NULL }
 };
 
@@ -58,6 +69,22 @@ model_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt,
 	sim_model_set (sd, cpu, model);
 	break;
       }
+
+    case OPTION_MODEL_INFO :
+      {
+	const MACH **machp;
+	const MODEL *model;
+	for (machp = & sim_machs[0]; *machp != NULL; ++machp)
+	  {
+	    sim_io_printf (sd, "Models for architecture `%s':\n",
+			   MACH_NAME (*machp));
+	    for (model = MACH_MODELS (*machp); MODEL_NAME (model) != NULL;
+		 ++model)
+	      sim_io_printf (sd, " %s", MODEL_NAME (model));
+	  }
+	sim_io_printf (sd, "\n");
+	break;
+      }
     }
 
   return SIM_RC_OK;
-- 
1.7.0.2


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]