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