sim: add --info-target for listing supported BFD targets
authorMike Frysinger <vapier@gentoo.org>
Mon, 4 Oct 2021 06:11:21 +0000 (02:11 -0400)
committerMike Frysinger <vapier@gentoo.org>
Mon, 4 Oct 2021 06:19:58 +0000 (02:19 -0400)
It can be difficult to guess the exact bfd name, so add an option to
list all the targets that the current build supports.  This aligns with
other simulator options like --info-architecture.

sim/common/sim-options.c

index e6d1107f7c5538f1bad615101fc657a3b0913c31..e82ac33fe764a0d9a1d6488b93e583726910e00d 100644 (file)
@@ -93,6 +93,7 @@ typedef enum {
   OPTION_DO_COMMAND,
   OPTION_ARCHITECTURE,
   OPTION_TARGET,
+  OPTION_TARGET_INFO,
   OPTION_ARCHITECTURE_INFO,
   OPTION_ENVIRONMENT,
   OPTION_ALIGNMENT,
@@ -161,6 +162,10 @@ static const OPTION standard_options[] =
   { {"target", required_argument, NULL, OPTION_TARGET},
       '\0', "BFDNAME", "Specify the object-code format for the object files",
       standard_option_handler },
+  { {"target-info", no_argument, NULL, OPTION_TARGET_INFO},
+      '\0', NULL, "List supported targets", standard_option_handler },
+  { {"info-target", no_argument, NULL, OPTION_TARGET_INFO},
+      '\0', NULL, NULL, standard_option_handler },
 
   { {"load-lma", no_argument, NULL, OPTION_LOAD_LMA},
       '\0', NULL,
@@ -365,6 +370,20 @@ standard_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt,
        break;
       }
 
+    case OPTION_TARGET_INFO:
+      {
+       const char **list = bfd_target_list ();
+       const char **lp;
+       if (list == NULL)
+         abort ();
+       sim_io_printf (sd, "Possible targets:");
+       for (lp = list; *lp != NULL; lp++)
+         sim_io_printf (sd, " %s", *lp);
+       sim_io_printf (sd, "\n");
+       free (list);
+       break;
+      }
+
     case OPTION_LOAD_LMA:
       {
        STATE_LOAD_AT_LMA_P (sd) = 1;