diff options
author | David Edelsohn <dje.gcc@gmail.com> | 1996-11-20 09:20:55 +0000 |
---|---|---|
committer | David Edelsohn <dje.gcc@gmail.com> | 1996-11-20 09:20:55 +0000 |
commit | 58b72d7e20508573cd2499c53e8505e3f64f9e09 (patch) | |
tree | e9a17495599ec3e4905500dfaadf846f325bbd3e /sim/common/gentmap.c | |
parent | e01714ccdabefedf2b6b2524c688d7994ca3f652 (diff) | |
download | ppe42-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.c | 102 |
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); +} |