X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=sim%2Fcommon%2Fgentmap.c;h=a606fad0e4ff9f1699d4ae52e2413e784051b741;hb=488d02fe7729dda5b9414a3942df68e0c316ce53;hp=12804e2deb7d1e552876659c73415d34a7db4d83;hpb=fa803dc60f0bf01297674c41d001798e18ade4dc;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/common/gentmap.c b/sim/common/gentmap.c index 12804e2deb..a606fad0e4 100644 --- a/sim/common/gentmap.c +++ b/sim/common/gentmap.c @@ -1,28 +1,37 @@ /* Generate targ-vals.h and targ-map.c. */ #include +#include +#include struct tdefs { char *symbol; int value; }; +static struct tdefs sys_tdefs[] = { +#define sys_defs +#include "nltvals.def" +#undef sys_defs + { 0, 0 } +}; + static struct tdefs errno_tdefs[] = { #define errno_defs -#include "targ-vals.def" +#include "nltvals.def" #undef errno_defs { 0, 0 } }; static struct tdefs open_tdefs[] = { #define open_defs -#include "targ-vals.def" +#include "nltvals.def" #undef open_defs { 0, 0 } }; static void -gen_targ_vals_h () +gen_targ_vals_h (void) { struct tdefs *t; @@ -32,6 +41,11 @@ gen_targ_vals_h () 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); @@ -46,47 +60,58 @@ gen_targ_vals_h () } static void -gen_targ_map_c () +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 \n"); printf ("#include \n"); printf ("#include \"ansidecl.h\"\n"); - printf ("#include \"callback.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 ("target_defs_map errno_map[] = {\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 (" { \"%s\", %s, TARGET_%s },\n", t->symbol, t->symbol, t->symbol); printf ("#endif\n"); } - printf (" { 0, 0 }\n"); + printf (" { 0, 0, 0 }\n"); printf ("};\n\n"); printf ("/* open flags mapping table */\n"); - printf ("target_defs_map open_map[] = {\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 (" { \"%s\", %s, TARGET_%s },\n", t->symbol, t->symbol, t->symbol); printf ("#endif\n"); } - printf (" { -1, -1 }\n"); + printf (" { 0, -1, -1 }\n"); printf ("};\n\n"); } int -main (argc, argv) - int argc; - char *argv[]; +main (int argc, char *argv[]) { if (argc != 2) abort ();