From cc40b4f2a3c66db1219e851c837c9e5481124aab Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 20 Jun 2021 22:55:44 -0400 Subject: [PATCH] sim: callback: generate signal map We've been generating the syscall/errno/open maps, but not the signal map, even though we've been including them in the source constants. --- sim/common/ChangeLog | 9 +++++++++ sim/common/callback.c | 3 +++ sim/common/gentmap.c | 24 ++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 55457719029..5ce1a66dd0e 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,12 @@ +2021-06-22 Mike Frysinger + + * callback.c: Include signal.h. + (cb_init_signal_map): New prototype. + (os_init): Assign signal_map. + * gentmap.c (signal_tdefs): New array. + (gen_targ_vals_h): Output signal_tdefs. + (gen_targ_map_c): Likewise. + 2021-06-22 Mike Frysinger * callback.c (os_getpid): New function. diff --git a/sim/common/callback.c b/sim/common/callback.c index 071e7b149b9..aca0112853c 100644 --- a/sim/common/callback.c +++ b/sim/common/callback.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -56,6 +57,7 @@ void sim_cb_eprintf (host_callback *, const char *, ...); extern CB_TARGET_DEFS_MAP cb_init_syscall_map[]; extern CB_TARGET_DEFS_MAP cb_init_errno_map[]; +extern CB_TARGET_DEFS_MAP cb_init_signal_map[]; extern CB_TARGET_DEFS_MAP cb_init_open_map[]; /* Make sure the FD provided is ok. If not, return non-zero @@ -676,6 +678,7 @@ os_init (host_callback *p) p->syscall_map = cb_init_syscall_map; p->errno_map = cb_init_errno_map; + p->signal_map = cb_init_signal_map; p->open_map = cb_init_open_map; return 1; diff --git a/sim/common/gentmap.c b/sim/common/gentmap.c index 254ec3f1119..f1f1bc2c03f 100644 --- a/sim/common/gentmap.c +++ b/sim/common/gentmap.c @@ -23,6 +23,13 @@ static struct tdefs errno_tdefs[] = { { 0, 0 } }; +static struct tdefs signal_tdefs[] = { +#define signal_defs +#include "nltvals.def" +#undef signal_defs + { 0, 0 } +}; + static struct tdefs open_tdefs[] = { #define open_defs #include "nltvals.def" @@ -51,6 +58,11 @@ gen_targ_vals_h (void) printf ("#define TARGET_%s %d\n", t->symbol, t->value); printf ("\n"); + printf ("/* signal values */\n"); + for (t = &signal_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); @@ -70,6 +82,7 @@ gen_targ_map_c (void) printf ("#include \"defs.h\"\n"); printf ("#include \n"); printf ("#include \n"); + printf ("#include \n"); printf ("#include \"ansidecl.h\"\n"); printf ("#include \"sim/callback.h\"\n"); printf ("#include \"targ-vals.h\"\n"); @@ -98,6 +111,17 @@ gen_targ_map_c (void) printf (" { 0, 0, 0 }\n"); printf ("};\n\n"); + printf ("/* signals mapping table */\n"); + printf ("CB_TARGET_DEFS_MAP cb_init_signal_map[] = {\n"); + for (t = &signal_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"); + printf ("/* open flags mapping table */\n"); printf ("CB_TARGET_DEFS_MAP cb_init_open_map[] = {\n"); for (t = &open_tdefs[0]; t->symbol; ++t) -- 2.30.2