1/* Generate targ-vals.h and targ-map.c. */ 2 3#include <stdio.h> 4#include <stdlib.h> 5 6struct tdefs { 7 char *symbol; 8 int value; 9}; 10 11static struct tdefs sys_tdefs[] = { 12#define sys_defs 13#include "targ-vals.def" 14#undef sys_defs 15 { 0, 0 } 16}; 17 18static struct tdefs errno_tdefs[] = { 19#define errno_defs 20#include "targ-vals.def" 21#undef errno_defs 22 { 0, 0 } 23}; 24 25static struct tdefs open_tdefs[] = { 26#define open_defs 27#include "targ-vals.def" 28#undef open_defs 29 { 0, 0 } 30}; 31 32static void 33gen_targ_vals_h () 34{ 35 struct tdefs *t; 36 37 printf ("/* Target header values needed by the simulator and gdb. */\n"); 38 printf ("/* This file is machine generated by gentmap.c. */\n\n"); 39 40 printf ("#ifndef TARG_VALS_H\n"); 41 printf ("#define TARG_VALS_H\n\n"); 42 43 printf ("/* syscall values */\n"); 44 for (t = &sys_tdefs[0]; t->symbol; ++t) 45 printf ("#define TARGET_%s %d\n", t->symbol, t->value); 46 printf ("\n"); 47 48 printf ("/* errno values */\n"); 49 for (t = &errno_tdefs[0]; t->symbol; ++t) 50 printf ("#define TARGET_%s %d\n", t->symbol, t->value); 51 printf ("\n"); 52 53 printf ("/* open flag values */\n"); 54 for (t = &open_tdefs[0]; t->symbol; ++t) 55 printf ("#define TARGET_%s 0x%x\n", t->symbol, t->value); 56 printf ("\n"); 57 58 printf ("#endif /* TARG_VALS_H */\n"); 59} 60 61static void 62gen_targ_map_c () 63{ 64 struct tdefs *t; 65 66 printf ("/* Target value mapping utilities needed by the simulator and gdb. */\n"); 67 printf ("/* This file is machine generated by gentmap.c. */\n\n"); 68 69 printf ("#include <errno.h>\n"); 70 printf ("#include <fcntl.h>\n"); 71 printf ("#include \"ansidecl.h\"\n"); 72 printf ("#include \"gdb/callback.h\"\n"); 73 printf ("#include \"targ-vals.h\"\n"); 74 printf ("\n"); 75 76 printf ("/* syscall mapping table */\n"); 77 printf ("CB_TARGET_DEFS_MAP cb_init_syscall_map[] = {\n"); 78 for (t = &sys_tdefs[0]; t->symbol; ++t) 79 { 80 printf ("#ifdef CB_%s\n", t->symbol); 81 printf (" { CB_%s, TARGET_%s },\n", t->symbol, t->symbol); 82 printf ("#endif\n"); 83 } 84 printf (" { -1, -1 }\n"); 85 printf ("};\n\n"); 86 87 printf ("/* errno mapping table */\n"); 88 printf ("CB_TARGET_DEFS_MAP cb_init_errno_map[] = {\n"); 89 for (t = &errno_tdefs[0]; t->symbol; ++t) 90 { 91 printf ("#ifdef %s\n", t->symbol); 92 printf (" { %s, TARGET_%s },\n", t->symbol, t->symbol); 93 printf ("#endif\n"); 94 } 95 printf (" { 0, 0 }\n"); 96 printf ("};\n\n"); 97 98 printf ("/* open flags mapping table */\n"); 99 printf ("CB_TARGET_DEFS_MAP cb_init_open_map[] = {\n"); 100 for (t = &open_tdefs[0]; t->symbol; ++t) 101 { 102 printf ("#ifdef %s\n", t->symbol); 103 printf (" { %s, TARGET_%s },\n", t->symbol, t->symbol); 104 printf ("#endif\n"); 105 } 106 printf (" { -1, -1 }\n"); 107 printf ("};\n\n"); 108} 109 110int 111main (argc, argv) 112 int argc; 113 char *argv[]; 114{ 115 if (argc != 2) 116 abort (); 117 118 if (strcmp (argv[1], "-h") == 0) 119 gen_targ_vals_h (); 120 else if (strcmp (argv[1], "-c") == 0) 121 gen_targ_map_c (); 122 else 123 abort (); 124 125 exit (0); 126} 127