123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /* Generate targ-vals.h and targ-map.c. */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct tdefs {
- char *symbol;
- int value;
- };
- static struct tdefs sys_tdefs[] = {
- #define sys_defs
- #include "targ-vals.def"
- #undef sys_defs
- { 0, 0 }
- };
- 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 (void)
- {
- 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 ("/* syscall values */\n");
- for (t = &sys_tdefs[0]; t->symbol; ++t)
- printf ("#define TARGET_%s %d\n", t->symbol, t->value);
- printf ("\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 (void)
- {
- 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 \"config.h\"\n");
- printf ("#include <errno.h>\n");
- printf ("#include <fcntl.h>\n");
- printf ("#include \"ansidecl.h\"\n");
- printf ("#include \"gdb/callback.h\"\n");
- printf ("#include \"targ-vals.h\"\n");
- printf ("\n");
- printf ("/* syscall mapping table */\n");
- printf ("CB_TARGET_DEFS_MAP cb_init_syscall_map[] = {\n");
- for (t = &sys_tdefs[0]; t->symbol; ++t)
- {
- printf ("#ifdef CB_%s\n", t->symbol);
- /* Skip the "SYS_" prefix for the name. */
- printf (" { \"%s\", CB_%s, TARGET_%s },\n", t->symbol + 4, t->symbol, t->symbol);
- printf ("#endif\n");
- }
- printf (" { 0, -1, -1 }\n");
- printf ("};\n\n");
- printf ("/* errno mapping table */\n");
- printf ("CB_TARGET_DEFS_MAP cb_init_errno_map[] = {\n");
- for (t = &errno_tdefs[0]; t->symbol; ++t)
- {
- printf ("#ifdef %s\n", t->symbol);
- printf (" { \"%s\", %s, TARGET_%s },\n", t->symbol, t->symbol, t->symbol);
- printf ("#endif\n");
- }
- printf (" { 0, 0, 0 }\n");
- printf ("};\n\n");
- printf ("/* open flags mapping table */\n");
- printf ("CB_TARGET_DEFS_MAP cb_init_open_map[] = {\n");
- for (t = &open_tdefs[0]; t->symbol; ++t)
- {
- printf ("#ifdef %s\n", t->symbol);
- printf (" { \"%s\", %s, TARGET_%s },\n", t->symbol, t->symbol, t->symbol);
- printf ("#endif\n");
- }
- printf (" { 0, -1, -1 }\n");
- printf ("};\n\n");
- }
- int
- main (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);
- }
|