File: gentmap.c

package info (click to toggle)
gdb 7.7.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 188,040 kB
  • ctags: 285,193
  • sloc: ansic: 1,961,235; asm: 319,930; exp: 109,483; makefile: 53,373; sh: 22,635; yacc: 10,891; cpp: 10,169; xml: 6,135; perl: 4,960; python: 3,452; ada: 1,998; pascal: 1,436; lex: 622; lisp: 536; sed: 228; f90: 164; awk: 140; objc: 134; java: 73; fortran: 43
file content (127 lines) | stat: -rw-r--r-- 3,003 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* Generate targ-vals.h and targ-map.c.  */

#include <stdio.h>
#include <stdlib.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 ()
{
  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 ()
{
  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);
      printf ("  { CB_%s, TARGET_%s },\n", t->symbol, t->symbol);
      printf ("#endif\n");
    }
  printf ("  { -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, TARGET_%s },\n", t->symbol, t->symbol);
      printf ("#endif\n");
    }
  printf ("  { 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, 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);
}