summaryrefslogtreecommitdiffstats
path: root/sim/common/gentmap.c
diff options
context:
space:
mode:
authorDavid Edelsohn <dje.gcc@gmail.com>1996-11-20 09:20:55 +0000
committerDavid Edelsohn <dje.gcc@gmail.com>1996-11-20 09:20:55 +0000
commit58b72d7e20508573cd2499c53e8505e3f64f9e09 (patch)
treee9a17495599ec3e4905500dfaadf846f325bbd3e /sim/common/gentmap.c
parente01714ccdabefedf2b6b2524c688d7994ca3f652 (diff)
downloadppe42-binutils-58b72d7e20508573cd2499c53e8505e3f64f9e09.tar.gz
ppe42-binutils-58b72d7e20508573cd2499c53e8505e3f64f9e09.zip
* run.c: #include ../common/config.h, tconfig.h.
(myname): New static global. (main): Recognize new options -a, -c. Also recognize -h if h8/300. Only process -c ifdef SIM_HAVE_SIMCACHE. Only process -p/-s ifdef SIM_HAVE_PROFILE. Parse program name from argv[0] and use in error messages. Pass sim_args to sim_open. Pass prog_args to sim_create_inferior. Add support for incomplete h8/300 termination indicators. (usage): Make more verbose. * aclocal.m4,config.in,tconfig.in,configure.in,configure: New files. * Makefile.in,Make-common.in,callback.c: New files. * nltvals.def,gentmap.c,gentvals.sh: New files.
Diffstat (limited to 'sim/common/gentmap.c')
-rw-r--r--sim/common/gentmap.c102
1 files changed, 102 insertions, 0 deletions
diff --git a/sim/common/gentmap.c b/sim/common/gentmap.c
new file mode 100644
index 0000000000..12804e2deb
--- /dev/null
+++ b/sim/common/gentmap.c
@@ -0,0 +1,102 @@
+/* Generate targ-vals.h and targ-map.c. */
+
+#include <stdio.h>
+
+struct tdefs {
+ char *symbol;
+ int value;
+};
+
+static struct tdefs errno_tdefs[] = {
+#define errno_defs
+#include "targ-vals.def"
+#undef errno_defs
+ { 0, 0 }
+};
+
+static struct tdefs open_tdefs[] = {
+#define open_defs
+#include "targ-vals.def"
+#undef open_defs
+ { 0, 0 }
+};
+
+static void
+gen_targ_vals_h ()
+{
+ struct tdefs *t;
+
+ printf ("/* Target header values needed by the simulator and gdb. */\n");
+ printf ("/* This file is machine generated by gentmap.c. */\n\n");
+
+ printf ("#ifndef TARG_VALS_H\n");
+ printf ("#define TARG_VALS_H\n\n");
+
+ printf ("/* errno values */\n");
+ for (t = &errno_tdefs[0]; t->symbol; ++t)
+ printf ("#define TARGET_%s %d\n", t->symbol, t->value);
+ printf ("\n");
+
+ printf ("/* open flag values */\n");
+ for (t = &open_tdefs[0]; t->symbol; ++t)
+ printf ("#define TARGET_%s 0x%x\n", t->symbol, t->value);
+ printf ("\n");
+
+ printf ("#endif /* TARG_VALS_H */\n");
+}
+
+static void
+gen_targ_map_c ()
+{
+ struct tdefs *t;
+
+ printf ("/* Target value mapping utilities needed by the simulator and gdb. */\n");
+ printf ("/* This file is machine generated by gentmap.c. */\n\n");
+
+ printf ("#include <errno.h>\n");
+ printf ("#include <fcntl.h>\n");
+ printf ("#include \"ansidecl.h\"\n");
+ printf ("#include \"callback.h\"\n");
+ printf ("#include \"targ-vals.h\"\n");
+ printf ("\n");
+
+ printf ("/* errno mapping table */\n");
+ printf ("target_defs_map errno_map[] = {\n");
+ for (t = &errno_tdefs[0]; t->symbol; ++t)
+ {
+ printf ("#ifdef %s\n", t->symbol);
+ printf (" { %s, TARGET_%s },\n", t->symbol, t->symbol);
+ printf ("#endif\n");
+ }
+ printf (" { 0, 0 }\n");
+ printf ("};\n\n");
+
+ printf ("/* open flags mapping table */\n");
+ printf ("target_defs_map open_map[] = {\n");
+ for (t = &open_tdefs[0]; t->symbol; ++t)
+ {
+ printf ("#ifdef %s\n", t->symbol);
+ printf (" { %s, TARGET_%s },\n", t->symbol, t->symbol);
+ printf ("#endif\n");
+ }
+ printf (" { -1, -1 }\n");
+ printf ("};\n\n");
+}
+
+int
+main (argc, argv)
+ int argc;
+ char *argv[];
+{
+ if (argc != 2)
+ abort ();
+
+ if (strcmp (argv[1], "-h") == 0)
+ gen_targ_vals_h ();
+ else if (strcmp (argv[1], "-c") == 0)
+ gen_targ_map_c ();
+ else
+ abort ();
+
+ exit (0);
+}
OpenPOWER on IntegriCloud