From 88c8370b25c6a76cb7de19a3ef50a34abc090756 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 6 Jul 2021 22:43:10 -0400 Subject: [PATCH] sim: nltvals: pull target signal out into a dedicated source file Like we just did for pulling out the errno map, pull out the signal map into a dedicated common file. All newlib ports are using the same signal map which makes it easy. --- sim/Makefile.in | 19 +++++ sim/common/Make-common.in | 1 + sim/common/gentmap.c | 24 ------ sim/common/local.mk | 1 + sim/common/nltvals.def | 41 --------- sim/common/target-newlib-signal.c | 136 ++++++++++++++++++++++++++++++ 6 files changed, 157 insertions(+), 65 deletions(-) create mode 100644 sim/common/target-newlib-signal.c diff --git a/sim/Makefile.in b/sim/Makefile.in index e0be7cfb338..6bb96bfbfa6 100644 --- a/sim/Makefile.in +++ b/sim/Makefile.in @@ -254,6 +254,7 @@ am_common_libcommon_a_OBJECTS = \ common/common_libcommon_a-portability.$(OBJEXT) \ common/common_libcommon_a-sim-load.$(OBJEXT) \ common/common_libcommon_a-target-newlib-errno.$(OBJEXT) \ + common/common_libcommon_a-target-newlib-signal.$(OBJEXT) \ common/common_libcommon_a-version.$(OBJEXT) common_libcommon_a_OBJECTS = $(am_common_libcommon_a_OBJECTS) igen_libigen_a_AR = $(AR) $(ARFLAGS) @@ -845,6 +846,7 @@ common_libcommon_a_SOURCES = \ common/portability.c \ common/sim-load.c \ common/target-newlib-errno.c \ + common/target-newlib-signal.c \ common/version.c @SIM_ENABLE_IGEN_TRUE@igen_libigen_a_SOURCES = \ @@ -1019,6 +1021,8 @@ common/common_libcommon_a-sim-load.$(OBJEXT): common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) common/common_libcommon_a-target-newlib-errno.$(OBJEXT): \ common/$(am__dirstamp) common/$(DEPDIR)/$(am__dirstamp) +common/common_libcommon_a-target-newlib-signal.$(OBJEXT): \ + common/$(am__dirstamp) common/$(DEPDIR)/$(am__dirstamp) common/common_libcommon_a-version.$(OBJEXT): common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) @@ -1142,6 +1146,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common_libcommon_a-portability.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common_libcommon_a-sim-load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common_libcommon_a-target-newlib-errno.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common_libcommon_a-target-newlib-signal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common_libcommon_a-version.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@igen/$(DEPDIR)/filter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@igen/$(DEPDIR)/filter_host.Po@am__quote@ @@ -1234,6 +1239,20 @@ common/common_libcommon_a-target-newlib-errno.obj: common/target-newlib-errno.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o common/common_libcommon_a-target-newlib-errno.obj `if test -f 'common/target-newlib-errno.c'; then $(CYGPATH_W) 'common/target-newlib-errno.c'; else $(CYGPATH_W) '$(srcdir)/common/target-newlib-errno.c'; fi` +common/common_libcommon_a-target-newlib-signal.o: common/target-newlib-signal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT common/common_libcommon_a-target-newlib-signal.o -MD -MP -MF common/$(DEPDIR)/common_libcommon_a-target-newlib-signal.Tpo -c -o common/common_libcommon_a-target-newlib-signal.o `test -f 'common/target-newlib-signal.c' || echo '$(srcdir)/'`common/target-newlib-signal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) common/$(DEPDIR)/common_libcommon_a-target-newlib-signal.Tpo common/$(DEPDIR)/common_libcommon_a-target-newlib-signal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/target-newlib-signal.c' object='common/common_libcommon_a-target-newlib-signal.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o common/common_libcommon_a-target-newlib-signal.o `test -f 'common/target-newlib-signal.c' || echo '$(srcdir)/'`common/target-newlib-signal.c + +common/common_libcommon_a-target-newlib-signal.obj: common/target-newlib-signal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT common/common_libcommon_a-target-newlib-signal.obj -MD -MP -MF common/$(DEPDIR)/common_libcommon_a-target-newlib-signal.Tpo -c -o common/common_libcommon_a-target-newlib-signal.obj `if test -f 'common/target-newlib-signal.c'; then $(CYGPATH_W) 'common/target-newlib-signal.c'; else $(CYGPATH_W) '$(srcdir)/common/target-newlib-signal.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) common/$(DEPDIR)/common_libcommon_a-target-newlib-signal.Tpo common/$(DEPDIR)/common_libcommon_a-target-newlib-signal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/target-newlib-signal.c' object='common/common_libcommon_a-target-newlib-signal.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o common/common_libcommon_a-target-newlib-signal.obj `if test -f 'common/target-newlib-signal.c'; then $(CYGPATH_W) 'common/target-newlib-signal.c'; else $(CYGPATH_W) '$(srcdir)/common/target-newlib-signal.c'; fi` + common/common_libcommon_a-version.o: common/version.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT common/common_libcommon_a-version.o -MD -MP -MF common/$(DEPDIR)/common_libcommon_a-version.Tpo -c -o common/common_libcommon_a-version.o `test -f 'common/version.c' || echo '$(srcdir)/'`common/version.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) common/$(DEPDIR)/common_libcommon_a-version.Tpo common/$(DEPDIR)/common_libcommon_a-version.Po diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in index 5db835713e7..d6b34d52122 100644 --- a/sim/common/Make-common.in +++ b/sim/common/Make-common.in @@ -232,6 +232,7 @@ COMMON_OBJS_NAMES = \ portability.o \ sim-load.o \ target-newlib-errno.o \ + target-newlib-signal.o \ version.o COMMON_OBJS = $(COMMON_OBJS_NAMES:%=../common/common_libcommon_a-%) diff --git a/sim/common/gentmap.c b/sim/common/gentmap.c index 8e6e3aeda32..fbc290185b5 100644 --- a/sim/common/gentmap.c +++ b/sim/common/gentmap.c @@ -16,13 +16,6 @@ static struct tdefs sys_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" @@ -46,11 +39,6 @@ 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); @@ -69,7 +57,6 @@ gen_targ_map_c (void) printf ("#include \"defs.h\"\n"); printf ("#include \n"); - printf ("#include \n"); printf ("#include \"ansidecl.h\"\n"); printf ("#include \"sim/callback.h\"\n"); printf ("#include \"targ-vals.h\"\n"); @@ -87,17 +74,6 @@ gen_targ_map_c (void) printf (" { 0, -1, -1 }\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) diff --git a/sim/common/local.mk b/sim/common/local.mk index 71a931715c2..bf5eda0b0d3 100644 --- a/sim/common/local.mk +++ b/sim/common/local.mk @@ -37,6 +37,7 @@ noinst_LIBRARIES += %D%/libcommon.a %D%/portability.c \ %D%/sim-load.c \ %D%/target-newlib-errno.c \ + %D%/target-newlib-signal.c \ %D%/version.c %D%/version.c: %D%/version.c-stamp ; @true diff --git a/sim/common/nltvals.def b/sim/common/nltvals.def index 5e72e596ee8..6d44d03ea5b 100644 --- a/sim/common/nltvals.def +++ b/sim/common/nltvals.def @@ -1,46 +1,5 @@ /* Newlib/libgloss macro values needed by remote target support. */ /* This file is machine generated by gennltvals.py. */ -#ifdef signal_defs -/* from signal.h */ -/* from sys/signal.h */ -/* begin signal target macros */ - { "SIGABRT", 6 }, - { "SIGALRM", 14 }, - { "SIGBUS", 10 }, - { "SIGCHLD", 20 }, - { "SIGCLD", 20 }, - { "SIGCONT", 19 }, - { "SIGEMT", 7 }, - { "SIGFPE", 8 }, - { "SIGHUP", 1 }, - { "SIGILL", 4 }, - { "SIGINT", 2 }, - { "SIGIO", 23 }, - { "SIGIOT", 6 }, - { "SIGKILL", 9 }, - { "SIGLOST", 29 }, - { "SIGPIPE", 13 }, - { "SIGPOLL", 23 }, - { "SIGPROF", 27 }, - { "SIGQUIT", 3 }, - { "SIGSEGV", 11 }, - { "SIGSTOP", 17 }, - { "SIGSYS", 12 }, - { "SIGTERM", 15 }, - { "SIGTRAP", 5 }, - { "SIGTSTP", 18 }, - { "SIGTTIN", 21 }, - { "SIGTTOU", 22 }, - { "SIGURG", 16 }, - { "SIGUSR1", 30 }, - { "SIGUSR2", 31 }, - { "SIGVTALRM", 26 }, - { "SIGWINCH", 28 }, - { "SIGXCPU", 24 }, - { "SIGXFSZ", 25 }, -#undef signal_defs -/* end signal target macros */ -#endif #ifdef open_defs /* from fcntl.h */ /* from sys/fcntl.h */ diff --git a/sim/common/target-newlib-signal.c b/sim/common/target-newlib-signal.c new file mode 100644 index 00000000000..b886bfa93b9 --- /dev/null +++ b/sim/common/target-newlib-signal.c @@ -0,0 +1,136 @@ +/* Target errno mappings for newlib/libgloss environment. + Copyright 1995-2021 Free Software Foundation, Inc. + Contributed by Mike Frysinger. + + This file is part of simulators. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* This must come before any other includes. */ +#include "defs.h" + +#include + +#include "sim/callback.h" + +/* This file is kept up-to-date via the gennltvals.py script. Do not edit + anything between the START & END comment blocks below. */ + +CB_TARGET_DEFS_MAP cb_init_signal_map[] = { + /* gennltvals: START */ +#ifdef SIGABRT + { "SIGABRT", SIGABRT, 6 }, +#endif +#ifdef SIGALRM + { "SIGALRM", SIGALRM, 14 }, +#endif +#ifdef SIGBUS + { "SIGBUS", SIGBUS, 10 }, +#endif +#ifdef SIGCHLD + { "SIGCHLD", SIGCHLD, 20 }, +#endif +#ifdef SIGCLD + { "SIGCLD", SIGCLD, 20 }, +#endif +#ifdef SIGCONT + { "SIGCONT", SIGCONT, 19 }, +#endif +#ifdef SIGEMT + { "SIGEMT", SIGEMT, 7 }, +#endif +#ifdef SIGFPE + { "SIGFPE", SIGFPE, 8 }, +#endif +#ifdef SIGHUP + { "SIGHUP", SIGHUP, 1 }, +#endif +#ifdef SIGILL + { "SIGILL", SIGILL, 4 }, +#endif +#ifdef SIGINT + { "SIGINT", SIGINT, 2 }, +#endif +#ifdef SIGIO + { "SIGIO", SIGIO, 23 }, +#endif +#ifdef SIGIOT + { "SIGIOT", SIGIOT, 6 }, +#endif +#ifdef SIGKILL + { "SIGKILL", SIGKILL, 9 }, +#endif +#ifdef SIGLOST + { "SIGLOST", SIGLOST, 29 }, +#endif +#ifdef SIGPIPE + { "SIGPIPE", SIGPIPE, 13 }, +#endif +#ifdef SIGPOLL + { "SIGPOLL", SIGPOLL, 23 }, +#endif +#ifdef SIGPROF + { "SIGPROF", SIGPROF, 27 }, +#endif +#ifdef SIGQUIT + { "SIGQUIT", SIGQUIT, 3 }, +#endif +#ifdef SIGSEGV + { "SIGSEGV", SIGSEGV, 11 }, +#endif +#ifdef SIGSTOP + { "SIGSTOP", SIGSTOP, 17 }, +#endif +#ifdef SIGSYS + { "SIGSYS", SIGSYS, 12 }, +#endif +#ifdef SIGTERM + { "SIGTERM", SIGTERM, 15 }, +#endif +#ifdef SIGTRAP + { "SIGTRAP", SIGTRAP, 5 }, +#endif +#ifdef SIGTSTP + { "SIGTSTP", SIGTSTP, 18 }, +#endif +#ifdef SIGTTIN + { "SIGTTIN", SIGTTIN, 21 }, +#endif +#ifdef SIGTTOU + { "SIGTTOU", SIGTTOU, 22 }, +#endif +#ifdef SIGURG + { "SIGURG", SIGURG, 16 }, +#endif +#ifdef SIGUSR1 + { "SIGUSR1", SIGUSR1, 30 }, +#endif +#ifdef SIGUSR2 + { "SIGUSR2", SIGUSR2, 31 }, +#endif +#ifdef SIGVTALRM + { "SIGVTALRM", SIGVTALRM, 26 }, +#endif +#ifdef SIGWINCH + { "SIGWINCH", SIGWINCH, 28 }, +#endif +#ifdef SIGXCPU + { "SIGXCPU", SIGXCPU, 24 }, +#endif +#ifdef SIGXFSZ + { "SIGXFSZ", SIGXFSZ, 25 }, +#endif + /* gennltvals: END */ + { NULL, -1, -1 }, +}; -- 2.30.2