From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (smtp.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) by sourceware.org (Postfix) with ESMTP id F33B53857C5E for ; Sun, 28 Nov 2021 08:44:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F33B53857C5E Received: by smtp.gentoo.org (Postfix, from userid 559) id 7A6ED342F20; Sun, 28 Nov 2021 08:44:13 +0000 (UTC) From: Mike Frysinger To: gdb-patches@sourceware.org Subject: [PATCH 4/9] sim: sh: switch to new target-newlib-syscall Date: Sun, 28 Nov 2021 03:43:53 -0500 Message-Id: <20211128084358.29302-4-vapier@gentoo.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211128084358.29302-1-vapier@gentoo.org> References: <20211128084358.29302-1-vapier@gentoo.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Nov 2021 08:44:16 -0000 Use the new target-newlib-syscall module. This is needed to merge all the architectures into a single build, and sh has a custom syscall table for its newlib/libgloss port. --- sim/sh/Makefile.in | 3 --- sim/sh/interp.c | 45 +++++++++++++++++++++++---------------------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/sim/sh/Makefile.in b/sim/sh/Makefile.in index e58cd48f1ae2..3435f403ab86 100644 --- a/sim/sh/Makefile.in +++ b/sim/sh/Makefile.in @@ -15,9 +15,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# This selects the newlib/libgloss syscall definitions. -NL_TARGET = -DNL_TARGET_sh - ## COMMON_PRE_CONFIG_FRAG SIM_OBJS = \ diff --git a/sim/sh/interp.c b/sim/sh/interp.c index 1b2b09f95100..fb92d9f4480a 100644 --- a/sim/sh/interp.c +++ b/sim/sh/interp.c @@ -61,7 +61,7 @@ #include "sim-base.h" #include "sim-options.h" -#include "targ-vals.h" +#include "target-newlib-syscall.h" #include @@ -888,21 +888,21 @@ trap (SIM_DESC sd, int i, int *regs, unsigned char *insn_ptr, { #if !defined(__GO32__) && !defined(_WIN32) - case TARGET_SYS_fork: + case TARGET_NEWLIB_SH_SYS_fork: regs[0] = fork (); break; /* This would work only if endianness matched between host and target. Besides, it's quite dangerous. */ #if 0 - case TARGET_SYS_execve: + case TARGET_NEWLIB_SH_SYS_execve: regs[0] = execve (ptr (regs[5]), (char **) ptr (regs[6]), (char **) ptr (regs[7])); break; - case TARGET_SYS_execv: + case TARGET_NEWLIB_SH_SYS_execv: regs[0] = execve (ptr (regs[5]), (char **) ptr (regs[6]), 0); break; #endif - case TARGET_SYS_pipe: + case TARGET_NEWLIB_SH_SYS_pipe: { regs[0] = (BUSERROR (regs[5], maskl) ? -EINVAL @@ -910,18 +910,18 @@ trap (SIM_DESC sd, int i, int *regs, unsigned char *insn_ptr, } break; - case TARGET_SYS_wait: + case TARGET_NEWLIB_SH_SYS_wait: regs[0] = wait ((int *) ptr (regs[5])); break; #endif /* !defined(__GO32__) && !defined(_WIN32) */ - case TARGET_SYS_read: + case TARGET_NEWLIB_SH_SYS_read: strnswap (regs[6], regs[7]); regs[0] = callback->read (callback, regs[5], ptr (regs[6]), regs[7]); strnswap (regs[6], regs[7]); break; - case TARGET_SYS_write: + case TARGET_NEWLIB_SH_SYS_write: strnswap (regs[6], regs[7]); if (regs[5] == 1) regs[0] = (int) callback->write_stdout (callback, @@ -931,13 +931,13 @@ trap (SIM_DESC sd, int i, int *regs, unsigned char *insn_ptr, ptr (regs[6]), regs[7]); strnswap (regs[6], regs[7]); break; - case TARGET_SYS_lseek: + case TARGET_NEWLIB_SH_SYS_lseek: regs[0] = callback->lseek (callback,regs[5], regs[6], regs[7]); break; - case TARGET_SYS_close: + case TARGET_NEWLIB_SH_SYS_close: regs[0] = callback->close (callback,regs[5]); break; - case TARGET_SYS_open: + case TARGET_NEWLIB_SH_SYS_open: { int len = strswaplen (regs[5]); strnswap (regs[5], len); @@ -945,13 +945,13 @@ trap (SIM_DESC sd, int i, int *regs, unsigned char *insn_ptr, strnswap (regs[5], len); break; } - case TARGET_SYS_exit: + case TARGET_NEWLIB_SH_SYS_exit: /* EXIT - caller can look in r5 to work out the reason */ raise_exception (SIGQUIT); regs[0] = regs[5]; break; - case TARGET_SYS_stat: /* added at hmsi */ + case TARGET_NEWLIB_SH_SYS_stat: /* added at hmsi */ /* stat system call */ { struct stat host_stat; @@ -1000,7 +1000,7 @@ trap (SIM_DESC sd, int i, int *regs, unsigned char *insn_ptr, break; #ifndef _WIN32 - case TARGET_SYS_chown: + case TARGET_NEWLIB_SH_SYS_chown: { int len = strswaplen (regs[5]); @@ -1010,7 +1010,7 @@ trap (SIM_DESC sd, int i, int *regs, unsigned char *insn_ptr, break; } #endif /* _WIN32 */ - case TARGET_SYS_chmod: + case TARGET_NEWLIB_SH_SYS_chmod: { int len = strswaplen (regs[5]); @@ -1019,7 +1019,7 @@ trap (SIM_DESC sd, int i, int *regs, unsigned char *insn_ptr, strnswap (regs[5], len); break; } - case TARGET_SYS_utime: + case TARGET_NEWLIB_SH_SYS_utime: { /* Cast the second argument to void *, to avoid type mismatch if a prototype is present. */ @@ -1035,16 +1035,16 @@ trap (SIM_DESC sd, int i, int *regs, unsigned char *insn_ptr, strnswap (regs[5], len); break; } - case TARGET_SYS_argc: + case TARGET_NEWLIB_SH_SYS_argc: regs[0] = countargv (prog_argv); break; - case TARGET_SYS_argnlen: + case TARGET_NEWLIB_SH_SYS_argnlen: if (regs[5] < countargv (prog_argv)) regs[0] = strlen (prog_argv[regs[5]]); else regs[0] = -1; break; - case TARGET_SYS_argn: + case TARGET_NEWLIB_SH_SYS_argn: if (regs[5] < countargv (prog_argv)) { /* Include the termination byte. */ @@ -1054,13 +1054,13 @@ trap (SIM_DESC sd, int i, int *regs, unsigned char *insn_ptr, else regs[0] = -1; break; - case TARGET_SYS_time: + case TARGET_NEWLIB_SH_SYS_time: regs[0] = get_now (); break; - case TARGET_SYS_ftruncate: + case TARGET_NEWLIB_SH_SYS_ftruncate: regs[0] = callback->ftruncate (callback, regs[5], regs[6]); break; - case TARGET_SYS_truncate: + case TARGET_NEWLIB_SH_SYS_truncate: { int len = strswaplen (regs[5]); strnswap (regs[5], len); @@ -2345,6 +2345,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb, /* Set default options before parsing user options. */ current_alignment = STRICT_ALIGNMENT; + cb->syscall_map = cb_sh_syscall_map; /* The cpu data is kept in a separately allocated chunk of memory. */ if (sim_cpu_alloc_all (sd, 1) != SIM_RC_OK) -- 2.33.0