From 871f95c6171d5301d14dbc73997aa8fbd8e9e7ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 24 Jul 2017 15:27:47 -0300 Subject: [PATCH 01/17] syscall: replace strcpy() by g_strlcpy() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit linux-user/syscall.c:9860:17: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy (buf->machine, cpu_to_uname_machine(cpu_env)); ^~~~~~ Reported-by: Clang Static Analyzer Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20170724182751.18261-32-f4bug@amsat.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index d02c16bbc6..7b9ac3b408 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -10156,7 +10156,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, if (!is_error(ret)) { /* Overwrite the native machine name with whatever is being emulated. */ - strcpy (buf->machine, cpu_to_uname_machine(cpu_env)); + g_strlcpy(buf->machine, cpu_to_uname_machine(cpu_env), + sizeof(buf->machine)); /* Allow the user to override the reported release. */ if (qemu_uname_release && *qemu_uname_release) { g_strlcpy(buf->release, qemu_uname_release, From b8e13ba94e39aae79be5724b2a382091e4c91c83 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Mon, 28 May 2018 21:48:12 +0200 Subject: [PATCH 02/17] linux-user: SPARC "rd %tick" can be used by user application MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit we have the same problem decribed in 7d6b1daedd ("linux-user, ppc: mftbl can be used by user application") for ppc in the case of sparc. When we use an application trying to resolve a name, it hangs in 0x00000000ff5dd40c: rd %tick, %o5 0x00000000ff5dd410: srlx %o5, 0x20, %o4 0x00000000ff5dd414: btst %o5, %g4 0x00000000ff5dd418: be %icc, 0xff5dd40c because %tick is staying at 0. As QEMU_CLOCK_VIRTUAL is not available in linux-user mode, simply use cpu_get_host_ticks() instead. Signed-off-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20180528194812.31216-1-laurent@vivier.eu> --- target/sparc/helper.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/sparc/helper.c b/target/sparc/helper.c index 1d854890b4..46232788c8 100644 --- a/target/sparc/helper.c +++ b/target/sparc/helper.c @@ -67,7 +67,9 @@ uint64_t helper_tick_get_count(CPUSPARCState *env, void *opaque, int mem_idx) return cpu_tick_get_count(timer); #else - return 0; + /* In user-mode, QEMU_CLOCK_VIRTUAL doesn't exist. + Just pass through the host cpu clock ticks. */ + return cpu_get_host_ticks(); #endif } From 5de7706e2c713e7fe2cf6ea039b042f1e7c53fa0 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:41:53 +0200 Subject: [PATCH 03/17] linux-user: move generic fcntl definitions to generic/fcntl.h add a per target target_fcntl.h and include the generic one from them No code change. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-2-laurent@vivier.eu> --- linux-user/aarch64/target_fcntl.h | 11 ++ linux-user/alpha/target_fcntl.h | 11 ++ linux-user/arm/target_fcntl.h | 11 ++ linux-user/cris/target_fcntl.h | 11 ++ linux-user/generic/fcntl.h | 151 +++++++++++++++++++++++++++ linux-user/hppa/target_fcntl.h | 11 ++ linux-user/i386/target_fcntl.h | 11 ++ linux-user/m68k/target_fcntl.h | 11 ++ linux-user/microblaze/target_fcntl.h | 11 ++ linux-user/mips/target_fcntl.h | 11 ++ linux-user/mips64/target_fcntl.h | 1 + linux-user/nios2/target_fcntl.h | 11 ++ linux-user/openrisc/target_fcntl.h | 11 ++ linux-user/ppc/target_fcntl.h | 11 ++ linux-user/riscv/target_fcntl.h | 11 ++ linux-user/s390x/target_fcntl.h | 11 ++ linux-user/sh4/target_fcntl.h | 11 ++ linux-user/sparc/target_fcntl.h | 11 ++ linux-user/sparc64/target_fcntl.h | 1 + linux-user/syscall_defs.h | 129 +---------------------- linux-user/tilegx/target_fcntl.h | 11 ++ linux-user/x86_64/target_fcntl.h | 11 ++ linux-user/xtensa/target_fcntl.h | 11 ++ 23 files changed, 363 insertions(+), 128 deletions(-) create mode 100644 linux-user/aarch64/target_fcntl.h create mode 100644 linux-user/alpha/target_fcntl.h create mode 100644 linux-user/arm/target_fcntl.h create mode 100644 linux-user/cris/target_fcntl.h create mode 100644 linux-user/generic/fcntl.h create mode 100644 linux-user/hppa/target_fcntl.h create mode 100644 linux-user/i386/target_fcntl.h create mode 100644 linux-user/m68k/target_fcntl.h create mode 100644 linux-user/microblaze/target_fcntl.h create mode 100644 linux-user/mips/target_fcntl.h create mode 100644 linux-user/mips64/target_fcntl.h create mode 100644 linux-user/nios2/target_fcntl.h create mode 100644 linux-user/openrisc/target_fcntl.h create mode 100644 linux-user/ppc/target_fcntl.h create mode 100644 linux-user/riscv/target_fcntl.h create mode 100644 linux-user/s390x/target_fcntl.h create mode 100644 linux-user/sh4/target_fcntl.h create mode 100644 linux-user/sparc/target_fcntl.h create mode 100644 linux-user/sparc64/target_fcntl.h create mode 100644 linux-user/tilegx/target_fcntl.h create mode 100644 linux-user/x86_64/target_fcntl.h create mode 100644 linux-user/xtensa/target_fcntl.h diff --git a/linux-user/aarch64/target_fcntl.h b/linux-user/aarch64/target_fcntl.h new file mode 100644 index 0000000000..59be406280 --- /dev/null +++ b/linux-user/aarch64/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef AARCH64_TARGET_FCNTL_H +#define AARCH64_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/alpha/target_fcntl.h b/linux-user/alpha/target_fcntl.h new file mode 100644 index 0000000000..bb603ff28c --- /dev/null +++ b/linux-user/alpha/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef ALPHA_TARGET_FCNTL_H +#define ALPHA_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/arm/target_fcntl.h b/linux-user/arm/target_fcntl.h new file mode 100644 index 0000000000..ca819df519 --- /dev/null +++ b/linux-user/arm/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef ARM_TARGET_FCNTL_H +#define ARM_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/cris/target_fcntl.h b/linux-user/cris/target_fcntl.h new file mode 100644 index 0000000000..df0aceea34 --- /dev/null +++ b/linux-user/cris/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef CRIS_TARGET_FCNTL_H +#define CRIS_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/generic/fcntl.h b/linux-user/generic/fcntl.h new file mode 100644 index 0000000000..a775a491e9 --- /dev/null +++ b/linux-user/generic/fcntl.h @@ -0,0 +1,151 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef GENERIC_FCNTL_H +#define GENERIC_FCNTL_H + +/* values follow. */ +#define TARGET_O_ACCMODE 0003 +#define TARGET_O_RDONLY 00 +#define TARGET_O_WRONLY 01 +#define TARGET_O_RDWR 02 +#ifndef TARGET_O_CREAT +#define TARGET_O_CREAT 0100 /* not fcntl */ +#endif +#ifndef TARGET_O_EXCL +#define TARGET_O_EXCL 0200 /* not fcntl */ +#endif +#ifndef TARGET_O_NOCTTY +#define TARGET_O_NOCTTY 0400 /* not fcntl */ +#endif +#ifndef TARGET_O_TRUNC +#define TARGET_O_TRUNC 01000 /* not fcntl */ +#endif +#ifndef TARGET_O_APPEND +#define TARGET_O_APPEND 02000 +#endif +#ifndef TARGET_O_NONBLOCK +#define TARGET_O_NONBLOCK 04000 +#endif +#ifndef TARGET_O_DSYNC +#define TARGET_O_DSYNC 010000 +#endif +#ifndef TARGET_FASYNC +#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ +#endif +#ifndef TARGET_O_DIRECT +#define TARGET_O_DIRECT 040000 /* direct disk access hint */ +#endif +#ifndef TARGET_O_LARGEFILE +#define TARGET_O_LARGEFILE 0100000 +#endif +#ifndef TARGET_O_DIRECTORY +#define TARGET_O_DIRECTORY 0200000 /* must be a directory */ +#endif +#ifndef TARGET_O_NOFOLLOW +#define TARGET_O_NOFOLLOW 0400000 /* don't follow links */ +#endif +#ifndef TARGET_O_NOATIME +#define TARGET_O_NOATIME 01000000 +#endif +#ifndef TARGET_O_CLOEXEC +#define TARGET_O_CLOEXEC 02000000 +#endif +#ifndef TARGET___O_SYNC +#define TARGET___O_SYNC 04000000 +#endif +#ifndef TARGET_O_PATH +#define TARGET_O_PATH 010000000 +#endif +#ifndef TARGET___O_TMPFILE +#define TARGET___O_TMPFILE 020000000 +#endif +#ifndef TARGET_O_TMPFILE +#define TARGET_O_TMPFILE (TARGET___O_TMPFILE | TARGET_O_DIRECTORY) +#endif +#ifndef TARGET_O_NDELAY +#define TARGET_O_NDELAY TARGET_O_NONBLOCK +#endif +#ifndef TARGET_O_SYNC +#define TARGET_O_SYNC (TARGET___O_SYNC | TARGET_O_DSYNC) +#endif + +#define TARGET_F_DUPFD 0 /* dup */ +#define TARGET_F_GETFD 1 /* get close_on_exec */ +#define TARGET_F_SETFD 2 /* set/clear close_on_exec */ +#define TARGET_F_GETFL 3 /* get file->f_flags */ +#define TARGET_F_SETFL 4 /* set file->f_flags */ +#ifndef TARGET_F_GETLK +#define TARGET_F_GETLK 5 +#define TARGET_F_SETLK 6 +#define TARGET_F_SETLKW 7 +#endif +#ifndef TARGET_F_SETOWN +#define TARGET_F_SETOWN 8 /* for sockets. */ +#define TARGET_F_GETOWN 9 /* for sockets. */ +#endif +#ifndef TARGET_F_SETSIG +#define TARGET_F_SETSIG 10 /* for sockets. */ +#define TARGET_F_GETSIG 11 /* for sockets. */ +#endif + +#ifndef TARGET_F_GETLK64 +#define TARGET_F_GETLK64 12 /* using 'struct flock64' */ +#define TARGET_F_SETLK64 13 +#define TARGET_F_SETLKW64 14 +#endif + +#ifndef TARGET_F_SETOWN_EX +#define TARGET_F_SETOWN_EX 15 +#define TARGET_F_GETOWN_EX 16 +#endif + +struct target_f_owner_ex { + int type; /* Owner type of ID. */ + int pid; /* ID of owner. */ +}; + +#ifndef TARGET_F_RDLCK +#define TARGET_F_RDLCK 0 +#define TARGET_F_WRLCK 1 +#define TARGET_F_UNLCK 2 +#endif + +#ifndef TARGET_F_EXLCK +#define TARGET_F_EXLCK 4 +#define TARGET_F_SHLCK 8 +#endif + +#ifndef TARGET_ARCH_FLOCK_PAD +#define TARGET_ARCH_FLOCK_PAD +#endif + +struct target_flock { + short l_type; + short l_whence; + abi_long l_start; + abi_long l_len; +#if defined(TARGET_MIPS) + abi_long l_sysid; +#endif + int l_pid; + TARGET_ARCH_FLOCK_PAD +}; + +#ifndef TARGET_ARCH_FLOCK64_PAD +#define TARGET_ARCH_FLOCK64_PAD +#endif + +struct target_flock64 { + abi_short l_type; + abi_short l_whence; + abi_llong l_start; + abi_llong l_len; + abi_int l_pid; + TARGET_ARCH_FLOCK64_PAD +}; +#endif diff --git a/linux-user/hppa/target_fcntl.h b/linux-user/hppa/target_fcntl.h new file mode 100644 index 0000000000..aa282a5ce8 --- /dev/null +++ b/linux-user/hppa/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef HPPA_TARGET_FCNTL_H +#define HPPA_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/i386/target_fcntl.h b/linux-user/i386/target_fcntl.h new file mode 100644 index 0000000000..4819743dae --- /dev/null +++ b/linux-user/i386/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef I386_TARGET_FCNTL_H +#define I386_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/m68k/target_fcntl.h b/linux-user/m68k/target_fcntl.h new file mode 100644 index 0000000000..4328c60d22 --- /dev/null +++ b/linux-user/m68k/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef M68K_TARGET_FCNTL_H +#define M68K_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/microblaze/target_fcntl.h b/linux-user/microblaze/target_fcntl.h new file mode 100644 index 0000000000..45402275ff --- /dev/null +++ b/linux-user/microblaze/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef MICROBLAZE_TARGET_FCNTL_H +#define MICROBLAZE_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/mips/target_fcntl.h b/linux-user/mips/target_fcntl.h new file mode 100644 index 0000000000..5404245068 --- /dev/null +++ b/linux-user/mips/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef MIPS_TARGET_FCNTL_H +#define MIPS_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/mips64/target_fcntl.h b/linux-user/mips64/target_fcntl.h new file mode 100644 index 0000000000..a511bc0e6c --- /dev/null +++ b/linux-user/mips64/target_fcntl.h @@ -0,0 +1 @@ +#include "../mips/target_fcntl.h" diff --git a/linux-user/nios2/target_fcntl.h b/linux-user/nios2/target_fcntl.h new file mode 100644 index 0000000000..714583215d --- /dev/null +++ b/linux-user/nios2/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef NIOS2_TARGET_FCNTL_H +#define NIOS2_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/openrisc/target_fcntl.h b/linux-user/openrisc/target_fcntl.h new file mode 100644 index 0000000000..ea31bf8b70 --- /dev/null +++ b/linux-user/openrisc/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef OPENRISC_TARGET_FCNTL_H +#define OPENRISC_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/ppc/target_fcntl.h b/linux-user/ppc/target_fcntl.h new file mode 100644 index 0000000000..627d547289 --- /dev/null +++ b/linux-user/ppc/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef PPC_TARGET_FCNTL_H +#define PPC_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/riscv/target_fcntl.h b/linux-user/riscv/target_fcntl.h new file mode 100644 index 0000000000..9c3d0fbe2b --- /dev/null +++ b/linux-user/riscv/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef RISCV_TARGET_FCNTL_H +#define RISCV_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/s390x/target_fcntl.h b/linux-user/s390x/target_fcntl.h new file mode 100644 index 0000000000..36dc50fba0 --- /dev/null +++ b/linux-user/s390x/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef S390X_TARGET_FCNTL_H +#define S390X_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/sh4/target_fcntl.h b/linux-user/sh4/target_fcntl.h new file mode 100644 index 0000000000..2622d95539 --- /dev/null +++ b/linux-user/sh4/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef SH4_TARGET_FCNTL_H +#define SH4_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/sparc/target_fcntl.h b/linux-user/sparc/target_fcntl.h new file mode 100644 index 0000000000..35a753153b --- /dev/null +++ b/linux-user/sparc/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef SPARC_TARGET_FCNTL_H +#define SPARC_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/sparc64/target_fcntl.h b/linux-user/sparc64/target_fcntl.h new file mode 100644 index 0000000000..053c774257 --- /dev/null +++ b/linux-user/sparc64/target_fcntl.h @@ -0,0 +1 @@ +#include "../sparc/target_fcntl.h" diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index e4cd87cc00..9969f21ba1 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2407,13 +2407,6 @@ struct target_statfs64 { }; #endif - -#define TARGET_F_DUPFD 0 /* dup */ -#define TARGET_F_GETFD 1 /* get close_on_exec */ -#define TARGET_F_SETFD 2 /* set/clear close_on_exec */ -#define TARGET_F_GETFL 3 /* get file->f_flags */ -#define TARGET_F_SETFL 4 /* set file->f_flags */ - #if defined(TARGET_ALPHA) #define TARGET_F_GETLK 7 #define TARGET_F_SETLK 8 @@ -2450,34 +2443,11 @@ struct target_statfs64 { #define TARGET_F_GETLK 7 #define TARGET_F_SETLK 8 #define TARGET_F_SETLKW 9 -#else -#define TARGET_F_GETLK 5 -#define TARGET_F_SETLK 6 -#define TARGET_F_SETLKW 7 -#define TARGET_F_SETOWN 8 /* for sockets. */ -#define TARGET_F_GETOWN 9 /* for sockets. */ #endif -#define TARGET_F_SETOWN_EX 15 -#define TARGET_F_GETOWN_EX 16 - -#ifndef TARGET_F_RDLCK -#define TARGET_F_RDLCK 0 -#define TARGET_F_WRLCK 1 -#define TARGET_F_UNLCK 2 -#endif - -#ifndef TARGET_F_EXLCK -#define TARGET_F_EXLCK 4 -#define TARGET_F_SHLCK 8 -#endif - #if defined(TARGET_HPPA) #define TARGET_F_SETSIG 13 /* for sockets. */ #define TARGET_F_GETSIG 14 /* for sockets. */ -#else -#define TARGET_F_SETSIG 10 /* for sockets. */ -#define TARGET_F_GETSIG 11 /* for sockets. */ #endif #if defined(TARGET_MIPS) @@ -2488,10 +2458,6 @@ struct target_statfs64 { #define TARGET_F_GETLK64 8 /* using 'struct flock64' */ #define TARGET_F_SETLK64 9 #define TARGET_F_SETLKW64 10 -#else -#define TARGET_F_GETLK64 12 /* using 'struct flock64' */ -#define TARGET_F_SETLK64 13 -#define TARGET_F_SETLKW64 14 #endif #define TARGET_F_LINUX_SPECIFIC_BASE 1024 @@ -2577,108 +2543,15 @@ struct target_statfs64 { #define TARGET___O_TMPFILE 0x2000000 #endif -/* values follow. */ -#define TARGET_O_ACCMODE 0003 -#define TARGET_O_RDONLY 00 -#define TARGET_O_WRONLY 01 -#define TARGET_O_RDWR 02 -#ifndef TARGET_O_CREAT -#define TARGET_O_CREAT 0100 /* not fcntl */ -#endif -#ifndef TARGET_O_EXCL -#define TARGET_O_EXCL 0200 /* not fcntl */ -#endif -#ifndef TARGET_O_NOCTTY -#define TARGET_O_NOCTTY 0400 /* not fcntl */ -#endif -#ifndef TARGET_O_TRUNC -#define TARGET_O_TRUNC 01000 /* not fcntl */ -#endif -#ifndef TARGET_O_APPEND -#define TARGET_O_APPEND 02000 -#endif -#ifndef TARGET_O_NONBLOCK -#define TARGET_O_NONBLOCK 04000 -#endif -#ifndef TARGET_O_DSYNC -#define TARGET_O_DSYNC 010000 -#endif -#ifndef TARGET_FASYNC -#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ -#endif -#ifndef TARGET_O_DIRECT -#define TARGET_O_DIRECT 040000 /* direct disk access hint */ -#endif -#ifndef TARGET_O_LARGEFILE -#define TARGET_O_LARGEFILE 0100000 -#endif -#ifndef TARGET_O_DIRECTORY -#define TARGET_O_DIRECTORY 0200000 /* must be a directory */ -#endif -#ifndef TARGET_O_NOFOLLOW -#define TARGET_O_NOFOLLOW 0400000 /* don't follow links */ -#endif -#ifndef TARGET_O_NOATIME -#define TARGET_O_NOATIME 01000000 -#endif -#ifndef TARGET_O_CLOEXEC -#define TARGET_O_CLOEXEC 02000000 -#endif -#ifndef TARGET___O_SYNC -#define TARGET___O_SYNC 04000000 -#endif -#ifndef TARGET_O_PATH -#define TARGET_O_PATH 010000000 -#endif -#ifndef TARGET___O_TMPFILE -#define TARGET___O_TMPFILE 020000000 -#endif -#ifndef TARGET_O_TMPFILE -#define TARGET_O_TMPFILE (TARGET___O_TMPFILE | TARGET_O_DIRECTORY) -#endif -#ifndef TARGET_O_NDELAY -#define TARGET_O_NDELAY TARGET_O_NONBLOCK -#endif -#ifndef TARGET_O_SYNC -#define TARGET_O_SYNC (TARGET___O_SYNC | TARGET_O_DSYNC) -#endif - #if defined(TARGET_SPARC) #define TARGET_ARCH_FLOCK_PAD abi_short __unused; #define TARGET_ARCH_FLOCK64_PAD abi_short __unused; #elif defined(TARGET_MIPS) #define TARGET_ARCH_FLOCK_PAD abi_long pad[4]; #define TARGET_ARCH_FLOCK64_PAD -#else -#define TARGET_ARCH_FLOCK_PAD -#define TARGET_ARCH_FLOCK64_PAD #endif -struct target_flock { - short l_type; - short l_whence; - abi_long l_start; - abi_long l_len; -#if defined(TARGET_MIPS) - abi_long l_sysid; -#endif - int l_pid; - TARGET_ARCH_FLOCK_PAD -}; - -struct target_flock64 { - abi_short l_type; - abi_short l_whence; - abi_llong l_start; - abi_llong l_len; - abi_int l_pid; - TARGET_ARCH_FLOCK64_PAD -}; - -struct target_f_owner_ex { - int type; /* Owner type of ID. */ - int pid; /* ID of owner. */ -}; +#include "target_fcntl.h" /* soundcard defines */ /* XXX: convert them all to arch independent entries */ diff --git a/linux-user/tilegx/target_fcntl.h b/linux-user/tilegx/target_fcntl.h new file mode 100644 index 0000000000..5ed7438459 --- /dev/null +++ b/linux-user/tilegx/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef TILEGX_TARGET_FCNTL_H +#define TILEGX_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/x86_64/target_fcntl.h b/linux-user/x86_64/target_fcntl.h new file mode 100644 index 0000000000..3c7238e56b --- /dev/null +++ b/linux-user/x86_64/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef X86_64_TARGET_FCNTL_H +#define X86_64_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif diff --git a/linux-user/xtensa/target_fcntl.h b/linux-user/xtensa/target_fcntl.h new file mode 100644 index 0000000000..dc1ca7eaa5 --- /dev/null +++ b/linux-user/xtensa/target_fcntl.h @@ -0,0 +1,11 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef XTENSA_TARGET_FCNTL_H +#define XTENSA_TARGET_FCNTL_H +#include "../generic/fcntl.h" +#endif From 40460c16eed61a4206e7033d8a98506c4cf3df5d Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:41:54 +0200 Subject: [PATCH 04/17] linux-user: move alpha fcntl definitions to alpha/target_fcntl.h No code change. Signed-off-by: Laurent Vivier Acked-by: Richard Henderson Message-Id: <20180529194207.31503-3-laurent@vivier.eu> --- linux-user/alpha/target_fcntl.h | 29 +++++++++++++++++++++++++++++ linux-user/syscall_defs.h | 32 ++------------------------------ 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/linux-user/alpha/target_fcntl.h b/linux-user/alpha/target_fcntl.h index bb603ff28c..2617e73472 100644 --- a/linux-user/alpha/target_fcntl.h +++ b/linux-user/alpha/target_fcntl.h @@ -7,5 +7,34 @@ #ifndef ALPHA_TARGET_FCNTL_H #define ALPHA_TARGET_FCNTL_H + +#define TARGET_O_NONBLOCK 04 +#define TARGET_O_APPEND 010 +#define TARGET_O_CREAT 01000 /* not fcntl */ +#define TARGET_O_TRUNC 02000 /* not fcntl */ +#define TARGET_O_EXCL 04000 /* not fcntl */ +#define TARGET_O_NOCTTY 010000 /* not fcntl */ +#define TARGET_O_DSYNC 040000 +#define TARGET_O_LARGEFILE 0 /* not necessary, always 64-bit */ +#define TARGET_O_DIRECTORY 0100000 /* must be a directory */ +#define TARGET_O_NOFOLLOW 0200000 /* don't follow links */ +#define TARGET_O_DIRECT 02000000 /* direct disk access hint */ +#define TARGET_O_NOATIME 04000000 +#define TARGET_O_CLOEXEC 010000000 +#define TARGET___O_SYNC 020000000 +#define TARGET_O_PATH 040000000 + +#define TARGET_F_GETLK 7 +#define TARGET_F_SETLK 8 +#define TARGET_F_SETLKW 9 +#define TARGET_F_SETOWN 5 /* for sockets. */ +#define TARGET_F_GETOWN 6 /* for sockets. */ + +#define TARGET_F_RDLCK 1 +#define TARGET_F_WRLCK 2 +#define TARGET_F_UNLCK 8 +#define TARGET_F_EXLCK 16 +#define TARGET_F_SHLCK 32 + #include "../generic/fcntl.h" #endif diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 9969f21ba1..d8318ebd27 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2407,19 +2407,7 @@ struct target_statfs64 { }; #endif -#if defined(TARGET_ALPHA) -#define TARGET_F_GETLK 7 -#define TARGET_F_SETLK 8 -#define TARGET_F_SETLKW 9 -#define TARGET_F_SETOWN 5 /* for sockets. */ -#define TARGET_F_GETOWN 6 /* for sockets. */ - -#define TARGET_F_RDLCK 1 -#define TARGET_F_WRLCK 2 -#define TARGET_F_UNLCK 8 -#define TARGET_F_EXLCK 16 -#define TARGET_F_SHLCK 32 -#elif defined(TARGET_MIPS) +#if defined(TARGET_MIPS) #define TARGET_F_GETLK 14 #define TARGET_F_SETLK 6 #define TARGET_F_SETLKW 7 @@ -2468,23 +2456,7 @@ struct target_statfs64 { #define TARGET_F_GETPIPE_SZ (TARGET_F_LINUX_SPECIFIC_BASE + 8) #define TARGET_F_NOTIFY (TARGET_F_LINUX_SPECIFIC_BASE+2) -#if defined(TARGET_ALPHA) -#define TARGET_O_NONBLOCK 04 -#define TARGET_O_APPEND 010 -#define TARGET_O_CREAT 01000 /* not fcntl */ -#define TARGET_O_TRUNC 02000 /* not fcntl */ -#define TARGET_O_EXCL 04000 /* not fcntl */ -#define TARGET_O_NOCTTY 010000 /* not fcntl */ -#define TARGET_O_DSYNC 040000 -#define TARGET_O_LARGEFILE 0 /* not necessary, always 64-bit */ -#define TARGET_O_DIRECTORY 0100000 /* must be a directory */ -#define TARGET_O_NOFOLLOW 0200000 /* don't follow links */ -#define TARGET_O_DIRECT 02000000 /* direct disk access hint */ -#define TARGET_O_NOATIME 04000000 -#define TARGET_O_CLOEXEC 010000000 -#define TARGET___O_SYNC 020000000 -#define TARGET_O_PATH 040000000 -#elif defined(TARGET_HPPA) +#if defined(TARGET_HPPA) #define TARGET_O_NONBLOCK 000200004 /* HPUX has separate NDELAY & NONBLOCK */ #define TARGET_O_APPEND 000000010 #define TARGET_O_CREAT 000000400 /* not fcntl */ From 8b08c98e4704df3bee99da3989dce4be2c36f873 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:41:55 +0200 Subject: [PATCH 05/17] linux-user: move hppa fcntl definitions to hppa/target_fcntl.h No code change. Signed-off-by: Laurent Vivier Acked-by: Richard Henderson Message-Id: <20180529194207.31503-4-laurent@vivier.eu> --- linux-user/hppa/target_fcntl.h | 31 +++++++++++++++++++++++++++++++ linux-user/syscall_defs.h | 34 +--------------------------------- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/linux-user/hppa/target_fcntl.h b/linux-user/hppa/target_fcntl.h index aa282a5ce8..bd966a59b8 100644 --- a/linux-user/hppa/target_fcntl.h +++ b/linux-user/hppa/target_fcntl.h @@ -7,5 +7,36 @@ #ifndef HPPA_TARGET_FCNTL_H #define HPPA_TARGET_FCNTL_H + +#define TARGET_O_NONBLOCK 000200004 /* HPUX has separate NDELAY & NONBLOCK */ +#define TARGET_O_APPEND 000000010 +#define TARGET_O_CREAT 000000400 /* not fcntl */ +#define TARGET_O_EXCL 000002000 /* not fcntl */ +#define TARGET_O_NOCTTY 000400000 /* not fcntl */ +#define TARGET_O_DSYNC 001000000 +#define TARGET_O_LARGEFILE 000004000 +#define TARGET_O_DIRECTORY 000010000 /* must be a directory */ +#define TARGET_O_NOFOLLOW 000000200 /* don't follow links */ +#define TARGET_O_NOATIME 004000000 +#define TARGET_O_CLOEXEC 010000000 +#define TARGET___O_SYNC 000100000 +#define TARGET_O_PATH 020000000 + +#define TARGET_F_RDLCK 1 +#define TARGET_F_WRLCK 2 +#define TARGET_F_UNLCK 3 + +#define TARGET_F_GETLK64 8 /* using 'struct flock64' */ +#define TARGET_F_SETLK64 9 +#define TARGET_F_SETLKW64 10 + +#define TARGET_F_GETLK 5 +#define TARGET_F_SETLK 6 +#define TARGET_F_SETLKW 7 +#define TARGET_F_GETOWN 11 /* for sockets. */ +#define TARGET_F_SETOWN 12 /* for sockets. */ +#define TARGET_F_SETSIG 13 /* for sockets. */ +#define TARGET_F_GETSIG 14 /* for sockets. */ + #include "../generic/fcntl.h" #endif diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index d8318ebd27..46d2353254 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2413,15 +2413,6 @@ struct target_statfs64 { #define TARGET_F_SETLKW 7 #define TARGET_F_SETOWN 24 /* for sockets. */ #define TARGET_F_GETOWN 23 /* for sockets. */ -#elif defined(TARGET_HPPA) -#define TARGET_F_RDLCK 1 -#define TARGET_F_WRLCK 2 -#define TARGET_F_UNLCK 3 -#define TARGET_F_GETLK 5 -#define TARGET_F_SETLK 6 -#define TARGET_F_SETLKW 7 -#define TARGET_F_GETOWN 11 /* for sockets. */ -#define TARGET_F_SETOWN 12 /* for sockets. */ #elif defined(TARGET_SPARC) #define TARGET_F_RDLCK 1 #define TARGET_F_WRLCK 2 @@ -2433,19 +2424,10 @@ struct target_statfs64 { #define TARGET_F_SETLKW 9 #endif -#if defined(TARGET_HPPA) -#define TARGET_F_SETSIG 13 /* for sockets. */ -#define TARGET_F_GETSIG 14 /* for sockets. */ -#endif - #if defined(TARGET_MIPS) #define TARGET_F_GETLK64 33 /* using 'struct flock64' */ #define TARGET_F_SETLK64 34 #define TARGET_F_SETLKW64 35 -#elif defined(TARGET_HPPA) -#define TARGET_F_GETLK64 8 /* using 'struct flock64' */ -#define TARGET_F_SETLK64 9 -#define TARGET_F_SETLKW64 10 #endif #define TARGET_F_LINUX_SPECIFIC_BASE 1024 @@ -2456,21 +2438,7 @@ struct target_statfs64 { #define TARGET_F_GETPIPE_SZ (TARGET_F_LINUX_SPECIFIC_BASE + 8) #define TARGET_F_NOTIFY (TARGET_F_LINUX_SPECIFIC_BASE+2) -#if defined(TARGET_HPPA) -#define TARGET_O_NONBLOCK 000200004 /* HPUX has separate NDELAY & NONBLOCK */ -#define TARGET_O_APPEND 000000010 -#define TARGET_O_CREAT 000000400 /* not fcntl */ -#define TARGET_O_EXCL 000002000 /* not fcntl */ -#define TARGET_O_NOCTTY 000400000 /* not fcntl */ -#define TARGET_O_DSYNC 001000000 -#define TARGET_O_LARGEFILE 000004000 -#define TARGET_O_DIRECTORY 000010000 /* must be a directory */ -#define TARGET_O_NOFOLLOW 000000200 /* don't follow links */ -#define TARGET_O_NOATIME 004000000 -#define TARGET_O_CLOEXEC 010000000 -#define TARGET___O_SYNC 000100000 -#define TARGET_O_PATH 020000000 -#elif defined(TARGET_ARM) || defined(TARGET_M68K) || defined(TARGET_AARCH64) +#if defined(TARGET_ARM) || defined(TARGET_M68K) || defined(TARGET_AARCH64) #define TARGET_O_DIRECTORY 040000 /* must be a directory */ #define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ #define TARGET_O_DIRECT 0200000 /* direct disk access hint */ From 050a1ba69a61f0d4ef79a6b252ffe449b7ca37e7 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:41:56 +0200 Subject: [PATCH 06/17] linux-user: move arm/aarch64/m68k fcntl definitions to [arm|aarch64|m68k]/target_fcntl.h No code change. Signed-off-by: Laurent Vivier Acked-by: Richard Henderson Message-Id: <20180529194207.31503-5-laurent@vivier.eu> --- linux-user/aarch64/target_fcntl.h | 5 +++++ linux-user/arm/target_fcntl.h | 6 ++++++ linux-user/m68k/target_fcntl.h | 6 ++++++ linux-user/syscall_defs.h | 7 +------ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/linux-user/aarch64/target_fcntl.h b/linux-user/aarch64/target_fcntl.h index 59be406280..efdf6e5f05 100644 --- a/linux-user/aarch64/target_fcntl.h +++ b/linux-user/aarch64/target_fcntl.h @@ -7,5 +7,10 @@ #ifndef AARCH64_TARGET_FCNTL_H #define AARCH64_TARGET_FCNTL_H + +#define TARGET_O_DIRECTORY 040000 /* must be a directory */ +#define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ +#define TARGET_O_DIRECT 0200000 /* direct disk access hint */ + #include "../generic/fcntl.h" #endif diff --git a/linux-user/arm/target_fcntl.h b/linux-user/arm/target_fcntl.h index ca819df519..c8ff6b2505 100644 --- a/linux-user/arm/target_fcntl.h +++ b/linux-user/arm/target_fcntl.h @@ -7,5 +7,11 @@ #ifndef ARM_TARGET_FCNTL_H #define ARM_TARGET_FCNTL_H + +#define TARGET_O_DIRECTORY 040000 /* must be a directory */ +#define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ +#define TARGET_O_DIRECT 0200000 /* direct disk access hint */ +#define TARGET_O_LARGEFILE 0400000 + #include "../generic/fcntl.h" #endif diff --git a/linux-user/m68k/target_fcntl.h b/linux-user/m68k/target_fcntl.h index 4328c60d22..068bc3243e 100644 --- a/linux-user/m68k/target_fcntl.h +++ b/linux-user/m68k/target_fcntl.h @@ -7,5 +7,11 @@ #ifndef M68K_TARGET_FCNTL_H #define M68K_TARGET_FCNTL_H + +#define TARGET_O_DIRECTORY 040000 /* must be a directory */ +#define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ +#define TARGET_O_DIRECT 0200000 /* direct disk access hint */ +#define TARGET_O_LARGEFILE 0400000 + #include "../generic/fcntl.h" #endif diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 46d2353254..3d13cdd654 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2438,12 +2438,7 @@ struct target_statfs64 { #define TARGET_F_GETPIPE_SZ (TARGET_F_LINUX_SPECIFIC_BASE + 8) #define TARGET_F_NOTIFY (TARGET_F_LINUX_SPECIFIC_BASE+2) -#if defined(TARGET_ARM) || defined(TARGET_M68K) || defined(TARGET_AARCH64) -#define TARGET_O_DIRECTORY 040000 /* must be a directory */ -#define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ -#define TARGET_O_DIRECT 0200000 /* direct disk access hint */ -#define TARGET_O_LARGEFILE 0400000 -#elif defined(TARGET_MIPS) +#if defined(TARGET_MIPS) #define TARGET_O_APPEND 0x0008 #define TARGET_O_DSYNC 0x0010 #define TARGET_O_NONBLOCK 0x0080 From b9acdef7861b63b17335112133995db3667aa9de Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:41:57 +0200 Subject: [PATCH 07/17] linux-user: move mips/mips64 fcntl definitions to mips/target_fcntl.h No code change. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-6-laurent@vivier.eu> --- linux-user/mips/target_fcntl.h | 27 +++++++++++++++++++++++++++ linux-user/syscall_defs.h | 31 ++----------------------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/linux-user/mips/target_fcntl.h b/linux-user/mips/target_fcntl.h index 5404245068..000527cc95 100644 --- a/linux-user/mips/target_fcntl.h +++ b/linux-user/mips/target_fcntl.h @@ -7,5 +7,32 @@ #ifndef MIPS_TARGET_FCNTL_H #define MIPS_TARGET_FCNTL_H + +#define TARGET_O_APPEND 0x0008 +#define TARGET_O_DSYNC 0x0010 +#define TARGET_O_NONBLOCK 0x0080 +#define TARGET_O_CREAT 0x0100 /* not fcntl */ +#define TARGET_O_TRUNC 0x0200 /* not fcntl */ +#define TARGET_O_EXCL 0x0400 /* not fcntl */ +#define TARGET_O_NOCTTY 0x0800 /* not fcntl */ +#define TARGET_FASYNC 0x1000 /* fcntl, for BSD compatibility */ +#define TARGET_O_LARGEFILE 0x2000 /* allow large file opens */ +#define TARGET___O_SYNC 0x4000 +#define TARGET_O_DIRECT 0x8000 /* direct disk access hint */ + +#define TARGET_F_GETLK 14 +#define TARGET_F_SETLK 6 +#define TARGET_F_SETLKW 7 + +#define TARGET_F_SETOWN 24 /* for sockets. */ +#define TARGET_F_GETOWN 23 /* for sockets. */ + +#define TARGET_ARCH_FLOCK_PAD abi_long pad[4]; +#define TARGET_ARCH_FLOCK64_PAD + +#define TARGET_F_GETLK64 33 /* using 'struct flock64' */ +#define TARGET_F_SETLK64 34 +#define TARGET_F_SETLKW64 35 + #include "../generic/fcntl.h" #endif diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 3d13cdd654..44a590d2c9 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2407,13 +2407,7 @@ struct target_statfs64 { }; #endif -#if defined(TARGET_MIPS) -#define TARGET_F_GETLK 14 -#define TARGET_F_SETLK 6 -#define TARGET_F_SETLKW 7 -#define TARGET_F_SETOWN 24 /* for sockets. */ -#define TARGET_F_GETOWN 23 /* for sockets. */ -#elif defined(TARGET_SPARC) +#if defined(TARGET_SPARC) #define TARGET_F_RDLCK 1 #define TARGET_F_WRLCK 2 #define TARGET_F_UNLCK 3 @@ -2424,12 +2418,6 @@ struct target_statfs64 { #define TARGET_F_SETLKW 9 #endif -#if defined(TARGET_MIPS) -#define TARGET_F_GETLK64 33 /* using 'struct flock64' */ -#define TARGET_F_SETLK64 34 -#define TARGET_F_SETLKW64 35 -#endif - #define TARGET_F_LINUX_SPECIFIC_BASE 1024 #define TARGET_F_SETLEASE (TARGET_F_LINUX_SPECIFIC_BASE + 0) #define TARGET_F_GETLEASE (TARGET_F_LINUX_SPECIFIC_BASE + 1) @@ -2438,19 +2426,7 @@ struct target_statfs64 { #define TARGET_F_GETPIPE_SZ (TARGET_F_LINUX_SPECIFIC_BASE + 8) #define TARGET_F_NOTIFY (TARGET_F_LINUX_SPECIFIC_BASE+2) -#if defined(TARGET_MIPS) -#define TARGET_O_APPEND 0x0008 -#define TARGET_O_DSYNC 0x0010 -#define TARGET_O_NONBLOCK 0x0080 -#define TARGET_O_CREAT 0x0100 /* not fcntl */ -#define TARGET_O_TRUNC 0x0200 /* not fcntl */ -#define TARGET_O_EXCL 0x0400 /* not fcntl */ -#define TARGET_O_NOCTTY 0x0800 /* not fcntl */ -#define TARGET_FASYNC 0x1000 /* fcntl, for BSD compatibility */ -#define TARGET_O_LARGEFILE 0x2000 /* allow large file opens */ -#define TARGET___O_SYNC 0x4000 -#define TARGET_O_DIRECT 0x8000 /* direct disk access hint */ -#elif defined (TARGET_PPC) +#if defined (TARGET_PPC) #define TARGET_O_DIRECTORY 040000 /* must be a directory */ #define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ #define TARGET_O_LARGEFILE 0200000 @@ -2481,9 +2457,6 @@ struct target_statfs64 { #if defined(TARGET_SPARC) #define TARGET_ARCH_FLOCK_PAD abi_short __unused; #define TARGET_ARCH_FLOCK64_PAD abi_short __unused; -#elif defined(TARGET_MIPS) -#define TARGET_ARCH_FLOCK_PAD abi_long pad[4]; -#define TARGET_ARCH_FLOCK64_PAD #endif #include "target_fcntl.h" From 3e6800ba3c79faa725160464a869a2a73491d573 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:41:58 +0200 Subject: [PATCH 08/17] linux-user: move ppc fcntl definitions to ppc/target_fcntl.h No code change. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-7-laurent@vivier.eu> --- linux-user/ppc/target_fcntl.h | 6 ++++++ linux-user/syscall_defs.h | 7 +------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/linux-user/ppc/target_fcntl.h b/linux-user/ppc/target_fcntl.h index 627d547289..d74ab710cf 100644 --- a/linux-user/ppc/target_fcntl.h +++ b/linux-user/ppc/target_fcntl.h @@ -7,5 +7,11 @@ #ifndef PPC_TARGET_FCNTL_H #define PPC_TARGET_FCNTL_H + +#define TARGET_O_DIRECTORY 040000 /* must be a directory */ +#define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ +#define TARGET_O_LARGEFILE 0200000 +#define TARGET_O_DIRECT 0400000 /* direct disk access hint */ + #include "../generic/fcntl.h" #endif diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 44a590d2c9..a434edadf8 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2426,12 +2426,7 @@ struct target_statfs64 { #define TARGET_F_GETPIPE_SZ (TARGET_F_LINUX_SPECIFIC_BASE + 8) #define TARGET_F_NOTIFY (TARGET_F_LINUX_SPECIFIC_BASE+2) -#if defined (TARGET_PPC) -#define TARGET_O_DIRECTORY 040000 /* must be a directory */ -#define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ -#define TARGET_O_LARGEFILE 0200000 -#define TARGET_O_DIRECT 0400000 /* direct disk access hint */ -#elif defined (TARGET_SPARC) +#if defined (TARGET_SPARC) #define TARGET_O_APPEND 0x0008 #define TARGET_FASYNC 0x0040 /* fcntl, for BSD compatibility */ #define TARGET_O_CREAT 0x0200 /* not fcntl */ From 995d2004b739a2a8ff60f9a0dda8c53bbdcceccf Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:41:59 +0200 Subject: [PATCH 09/17] linux-user: move sparc/sparc64 fcntl definitions to sparc/target_fcntl.h No code change. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-8-laurent@vivier.eu> --- linux-user/sparc/target_fcntl.h | 34 ++++++++++++++++++++++++++++ linux-user/syscall_defs.h | 39 --------------------------------- 2 files changed, 34 insertions(+), 39 deletions(-) diff --git a/linux-user/sparc/target_fcntl.h b/linux-user/sparc/target_fcntl.h index 35a753153b..c2532989e5 100644 --- a/linux-user/sparc/target_fcntl.h +++ b/linux-user/sparc/target_fcntl.h @@ -7,5 +7,39 @@ #ifndef SPARC_TARGET_FCNTL_H #define SPARC_TARGET_FCNTL_H + +#define TARGET_O_APPEND 0x0008 +#define TARGET_FASYNC 0x0040 /* fcntl, for BSD compatibility */ +#define TARGET_O_CREAT 0x0200 /* not fcntl */ +#define TARGET_O_TRUNC 0x0400 /* not fcntl */ +#define TARGET_O_EXCL 0x0800 /* not fcntl */ +#define TARGET_O_DSYNC 0x2000 +#define TARGET_O_NONBLOCK 0x4000 +# ifdef TARGET_SPARC64 +# define TARGET_O_NDELAY 0x0004 +# else +# define TARGET_O_NDELAY (0x0004 | TARGET_O_NONBLOCK) +# endif +#define TARGET_O_NOCTTY 0x8000 /* not fcntl */ +#define TARGET_O_LARGEFILE 0x40000 +#define TARGET_O_DIRECT 0x100000 /* direct disk access hint */ +#define TARGET_O_NOATIME 0x200000 +#define TARGET_O_CLOEXEC 0x400000 +#define TARGET___O_SYNC 0x800000 +#define TARGET_O_PATH 0x1000000 +#define TARGET___O_TMPFILE 0x2000000 + +#define TARGET_F_RDLCK 1 +#define TARGET_F_WRLCK 2 +#define TARGET_F_UNLCK 3 +#define TARGET_F_GETOWN 5 /* for sockets. */ +#define TARGET_F_SETOWN 6 /* for sockets. */ +#define TARGET_F_GETLK 7 +#define TARGET_F_SETLK 8 +#define TARGET_F_SETLKW 9 + +#define TARGET_ARCH_FLOCK_PAD abi_short __unused; +#define TARGET_ARCH_FLOCK64_PAD abi_short __unused; + #include "../generic/fcntl.h" #endif diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index a434edadf8..fbf1bf995a 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2407,17 +2407,6 @@ struct target_statfs64 { }; #endif -#if defined(TARGET_SPARC) -#define TARGET_F_RDLCK 1 -#define TARGET_F_WRLCK 2 -#define TARGET_F_UNLCK 3 -#define TARGET_F_GETOWN 5 /* for sockets. */ -#define TARGET_F_SETOWN 6 /* for sockets. */ -#define TARGET_F_GETLK 7 -#define TARGET_F_SETLK 8 -#define TARGET_F_SETLKW 9 -#endif - #define TARGET_F_LINUX_SPECIFIC_BASE 1024 #define TARGET_F_SETLEASE (TARGET_F_LINUX_SPECIFIC_BASE + 0) #define TARGET_F_GETLEASE (TARGET_F_LINUX_SPECIFIC_BASE + 1) @@ -2426,34 +2415,6 @@ struct target_statfs64 { #define TARGET_F_GETPIPE_SZ (TARGET_F_LINUX_SPECIFIC_BASE + 8) #define TARGET_F_NOTIFY (TARGET_F_LINUX_SPECIFIC_BASE+2) -#if defined (TARGET_SPARC) -#define TARGET_O_APPEND 0x0008 -#define TARGET_FASYNC 0x0040 /* fcntl, for BSD compatibility */ -#define TARGET_O_CREAT 0x0200 /* not fcntl */ -#define TARGET_O_TRUNC 0x0400 /* not fcntl */ -#define TARGET_O_EXCL 0x0800 /* not fcntl */ -#define TARGET_O_DSYNC 0x2000 -#define TARGET_O_NONBLOCK 0x4000 -# ifdef TARGET_SPARC64 -# define TARGET_O_NDELAY 0x0004 -# else -# define TARGET_O_NDELAY (0x0004 | TARGET_O_NONBLOCK) -# endif -#define TARGET_O_NOCTTY 0x8000 /* not fcntl */ -#define TARGET_O_LARGEFILE 0x40000 -#define TARGET_O_DIRECT 0x100000 /* direct disk access hint */ -#define TARGET_O_NOATIME 0x200000 -#define TARGET_O_CLOEXEC 0x400000 -#define TARGET___O_SYNC 0x800000 -#define TARGET_O_PATH 0x1000000 -#define TARGET___O_TMPFILE 0x2000000 -#endif - -#if defined(TARGET_SPARC) -#define TARGET_ARCH_FLOCK_PAD abi_short __unused; -#define TARGET_ARCH_FLOCK64_PAD abi_short __unused; -#endif - #include "target_fcntl.h" /* soundcard defines */ From 9850f9f63acb44724138a2b89b07ea4f6b3d2ba0 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:42:00 +0200 Subject: [PATCH 10/17] linux-user: move get_sp_from_cpustate() to target_cpu.h Remove useless includes Fix HPPA include guard. Signed-off-by: Laurent Vivier Acked-by: Richard Henderson Message-Id: <20180529194207.31503-9-laurent@vivier.eu> --- linux-user/aarch64/signal.c | 1 - linux-user/aarch64/target_cpu.h | 4 ++++ linux-user/aarch64/target_signal.h | 7 ------- linux-user/alpha/signal.c | 1 - linux-user/alpha/target_cpu.h | 4 ++++ linux-user/alpha/target_signal.h | 8 -------- linux-user/arm/signal.c | 1 - linux-user/arm/target_cpu.h | 4 ++++ linux-user/arm/target_signal.h | 7 ------- linux-user/cris/signal.c | 1 - linux-user/cris/target_cpu.h | 4 ++++ linux-user/cris/target_signal.h | 7 ------- linux-user/hppa/signal.c | 1 - linux-user/hppa/target_cpu.h | 8 ++++++-- linux-user/hppa/target_signal.h | 6 ------ linux-user/i386/signal.c | 1 - linux-user/i386/target_cpu.h | 4 ++++ linux-user/i386/target_signal.h | 7 ------- linux-user/m68k/signal.c | 1 - linux-user/m68k/target_cpu.h | 4 ++++ linux-user/m68k/target_signal.h | 7 ------- linux-user/microblaze/signal.c | 1 - linux-user/microblaze/target_cpu.h | 4 ++++ linux-user/microblaze/target_signal.h | 7 ------- linux-user/mips/signal.c | 1 - linux-user/mips/target_cpu.h | 4 ++++ linux-user/mips/target_signal.h | 7 ------- linux-user/mips64/target_signal.h | 6 ------ linux-user/nios2/signal.c | 1 - linux-user/nios2/target_cpu.h | 4 ++++ linux-user/nios2/target_signal.h | 6 ------ linux-user/openrisc/signal.c | 1 - linux-user/openrisc/target_cpu.h | 4 ++++ linux-user/openrisc/target_signal.h | 6 ------ linux-user/ppc/signal.c | 1 - linux-user/ppc/target_cpu.h | 5 ++++- linux-user/ppc/target_signal.h | 7 ------- linux-user/qemu.h | 1 - linux-user/riscv/signal.c | 1 - linux-user/riscv/target_cpu.h | 4 ++++ linux-user/riscv/target_signal.h | 6 ------ linux-user/s390x/signal.c | 1 - linux-user/s390x/target_cpu.h | 4 ++++ linux-user/s390x/target_signal.h | 7 ------- linux-user/sh4/signal.c | 1 - linux-user/sh4/target_cpu.h | 4 ++++ linux-user/sh4/target_signal.h | 7 ------- linux-user/signal.c | 1 - linux-user/sparc/signal.c | 1 - linux-user/sparc/target_cpu.h | 11 +++++++++++ linux-user/sparc/target_signal.h | 14 -------------- linux-user/sparc64/target_signal.h | 14 -------------- linux-user/syscall_defs.h | 2 ++ linux-user/tilegx/signal.c | 1 - linux-user/tilegx/target_cpu.h | 4 ++++ linux-user/tilegx/target_signal.h | 6 ------ linux-user/x86_64/target_signal.h | 6 ------ linux-user/xtensa/signal.c | 1 - linux-user/xtensa/target_cpu.h | 4 ++++ linux-user/xtensa/target_signal.h | 6 ------ 60 files changed, 83 insertions(+), 177 deletions(-) diff --git a/linux-user/aarch64/signal.c b/linux-user/aarch64/signal.c index f95dc61dfb..07fedfc33c 100644 --- a/linux-user/aarch64/signal.c +++ b/linux-user/aarch64/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/aarch64/target_cpu.h b/linux-user/aarch64/target_cpu.h index 777ce29f16..a021c95fa4 100644 --- a/linux-user/aarch64/target_cpu.h +++ b/linux-user/aarch64/target_cpu.h @@ -35,4 +35,8 @@ static inline void cpu_set_tls(CPUARMState *env, target_ulong newtls) env->cp15.tpidr_el[0] = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUARMState *state) +{ + return state->xregs[31]; +} #endif diff --git a/linux-user/aarch64/target_signal.h b/linux-user/aarch64/target_signal.h index 0b7ae25120..18599b1447 100644 --- a/linux-user/aarch64/target_signal.h +++ b/linux-user/aarch64/target_signal.h @@ -1,8 +1,6 @@ #ifndef AARCH64_TARGET_SIGNAL_H #define AARCH64_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,10 +19,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUARMState *state) -{ - return state->xregs[31]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* AARCH64_TARGET_SIGNAL_H */ diff --git a/linux-user/alpha/signal.c b/linux-user/alpha/signal.c index f24de02c6f..c5c27ce084 100644 --- a/linux-user/alpha/signal.c +++ b/linux-user/alpha/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/alpha/target_cpu.h b/linux-user/alpha/target_cpu.h index ad124da7c0..ac4d255ae7 100644 --- a/linux-user/alpha/target_cpu.h +++ b/linux-user/alpha/target_cpu.h @@ -33,4 +33,8 @@ static inline void cpu_set_tls(CPUAlphaState *env, target_ulong newtls) env->unique = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUAlphaState *state) +{ + return state->ir[IR_SP]; +} #endif diff --git a/linux-user/alpha/target_signal.h b/linux-user/alpha/target_signal.h index 4e912e1cf9..e6f2f04911 100644 --- a/linux-user/alpha/target_signal.h +++ b/linux-user/alpha/target_signal.h @@ -1,8 +1,6 @@ #ifndef ALPHA_TARGET_SIGNAL_H #define ALPHA_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -22,12 +20,6 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 4096 #define TARGET_SIGSTKSZ 16384 -static inline abi_ulong get_sp_from_cpustate(CPUAlphaState *state) -{ - return state->ir[IR_SP]; -} - - /* From . */ #define TARGET_GEN_INTOVF -1 /* integer overflow */ #define TARGET_GEN_INTDIV -2 /* integer division by zero */ diff --git a/linux-user/arm/signal.c b/linux-user/arm/signal.c index 59b5b65ed1..b0e753801b 100644 --- a/linux-user/arm/signal.c +++ b/linux-user/arm/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/arm/target_cpu.h b/linux-user/arm/target_cpu.h index c3eb4b243d..8a3764919a 100644 --- a/linux-user/arm/target_cpu.h +++ b/linux-user/arm/target_cpu.h @@ -49,4 +49,8 @@ static inline target_ulong cpu_get_tls(CPUARMState *env) } } +static inline abi_ulong get_sp_from_cpustate(CPUARMState *state) +{ + return state->regs[13]; +} #endif diff --git a/linux-user/arm/target_signal.h b/linux-user/arm/target_signal.h index d6a03ec87d..f80eb0a215 100644 --- a/linux-user/arm/target_signal.h +++ b/linux-user/arm/target_signal.h @@ -1,8 +1,6 @@ #ifndef ARM_TARGET_SIGNAL_H #define ARM_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,10 +19,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUARMState *state) -{ - return state->regs[13]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* ARM_TARGET_SIGNAL_H */ diff --git a/linux-user/cris/signal.c b/linux-user/cris/signal.c index 322d9db1a7..0b405247cf 100644 --- a/linux-user/cris/signal.c +++ b/linux-user/cris/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/cris/target_cpu.h b/linux-user/cris/target_cpu.h index c43aac62f9..2309343979 100644 --- a/linux-user/cris/target_cpu.h +++ b/linux-user/cris/target_cpu.h @@ -33,4 +33,8 @@ static inline void cpu_set_tls(CPUCRISState *env, target_ulong newtls) env->pregs[PR_PID] = (env->pregs[PR_PID] & 0xff) | newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUCRISState *state) +{ + return state->regs[14]; +} #endif diff --git a/linux-user/cris/target_signal.h b/linux-user/cris/target_signal.h index 74ff2f3382..bf404a85fd 100644 --- a/linux-user/cris/target_signal.h +++ b/linux-user/cris/target_signal.h @@ -1,8 +1,6 @@ #ifndef CRIS_TARGET_SIGNAL_H #define CRIS_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,10 +19,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUCRISState *state) -{ - return state->regs[14]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* CRIS_TARGET_SIGNAL_H */ diff --git a/linux-user/hppa/signal.c b/linux-user/hppa/signal.c index 6e7a295aee..b6927ee673 100644 --- a/linux-user/hppa/signal.c +++ b/linux-user/hppa/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/hppa/target_cpu.h b/linux-user/hppa/target_cpu.h index 7b78bbea80..1c539bdbd6 100644 --- a/linux-user/hppa/target_cpu.h +++ b/linux-user/hppa/target_cpu.h @@ -16,8 +16,8 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, see . */ -#ifndef ALPHA_TARGET_CPU_H -#define ALPHA_TARGET_CPU_H +#ifndef HPPA_TARGET_CPU_H +#define HPPA_TARGET_CPU_H static inline void cpu_clone_regs(CPUHPPAState *env, target_ulong newsp) { @@ -36,4 +36,8 @@ static inline void cpu_set_tls(CPUHPPAState *env, target_ulong newtls) env->cr[27] = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUHPPAState *state) +{ + return state->gr[30]; +} #endif diff --git a/linux-user/hppa/target_signal.h b/linux-user/hppa/target_signal.h index f28b4bf6e8..1beae6485a 100644 --- a/linux-user/hppa/target_signal.h +++ b/linux-user/hppa/target_signal.h @@ -1,8 +1,6 @@ #ifndef HPPA_TARGET_SIGNAL_H #define HPPA_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,8 +19,4 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUHPPAState *state) -{ - return state->gr[30]; -} #endif /* HPPA_TARGET_SIGNAL_H */ diff --git a/linux-user/i386/signal.c b/linux-user/i386/signal.c index e9a23a2dec..fecb4c99c3 100644 --- a/linux-user/i386/signal.c +++ b/linux-user/i386/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/i386/target_cpu.h b/linux-user/i386/target_cpu.h index 7fbcf9bb57..ece04d0966 100644 --- a/linux-user/i386/target_cpu.h +++ b/linux-user/i386/target_cpu.h @@ -45,4 +45,8 @@ static inline void cpu_set_tls(CPUX86State *env, target_ulong newtls) } #endif /* defined(TARGET_ABI32) */ +static inline abi_ulong get_sp_from_cpustate(CPUX86State *state) +{ + return state->regs[R_ESP]; +} #endif /* I386_TARGET_CPU_H */ diff --git a/linux-user/i386/target_signal.h b/linux-user/i386/target_signal.h index 6ad4089482..8a284f4b57 100644 --- a/linux-user/i386/target_signal.h +++ b/linux-user/i386/target_signal.h @@ -1,8 +1,6 @@ #ifndef I386_TARGET_SIGNAL_H #define I386_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,10 +19,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUX86State *state) -{ - return state->regs[R_ESP]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* I386_TARGET_SIGNAL_H */ diff --git a/linux-user/m68k/signal.c b/linux-user/m68k/signal.c index 5dd8bb5f99..38bd77ec16 100644 --- a/linux-user/m68k/signal.c +++ b/linux-user/m68k/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/m68k/target_cpu.h b/linux-user/m68k/target_cpu.h index cc0bfc298e..611df065ca 100644 --- a/linux-user/m68k/target_cpu.h +++ b/linux-user/m68k/target_cpu.h @@ -37,4 +37,8 @@ static inline void cpu_set_tls(CPUM68KState *env, target_ulong newtls) ts->tp_value = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUM68KState *state) +{ + return state->aregs[7]; +} #endif diff --git a/linux-user/m68k/target_signal.h b/linux-user/m68k/target_signal.h index ff303f2b3c..0cf26b79e5 100644 --- a/linux-user/m68k/target_signal.h +++ b/linux-user/m68k/target_signal.h @@ -1,8 +1,6 @@ #ifndef M68K_TARGET_SIGNAL_H #define M68K_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,10 +19,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUM68KState *state) -{ - return state->aregs[7]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* M68K_TARGET_SIGNAL_H */ diff --git a/linux-user/microblaze/signal.c b/linux-user/microblaze/signal.c index fada0f1495..712ee522b2 100644 --- a/linux-user/microblaze/signal.c +++ b/linux-user/microblaze/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/microblaze/target_cpu.h b/linux-user/microblaze/target_cpu.h index 7dd979f960..73e139938c 100644 --- a/linux-user/microblaze/target_cpu.h +++ b/linux-user/microblaze/target_cpu.h @@ -32,4 +32,8 @@ static inline void cpu_set_tls(CPUMBState *env, target_ulong newtls) env->regs[21] = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUMBState *state) +{ + return state->regs[1]; +} #endif diff --git a/linux-user/microblaze/target_signal.h b/linux-user/microblaze/target_signal.h index 9fe4048292..86adcc1fc9 100644 --- a/linux-user/microblaze/target_signal.h +++ b/linux-user/microblaze/target_signal.h @@ -1,8 +1,6 @@ #ifndef MICROBLAZE_TARGET_SIGNAL_H #define MICROBLAZE_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,10 +19,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUMBState *state) -{ - return state->regs[1]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* MICROBLAZE_TARGET_SIGNAL_H */ diff --git a/linux-user/mips/signal.c b/linux-user/mips/signal.c index ed9849c7f6..6aa303ec9c 100644 --- a/linux-user/mips/signal.c +++ b/linux-user/mips/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/mips/target_cpu.h b/linux-user/mips/target_cpu.h index 2002920312..02cf5eeff7 100644 --- a/linux-user/mips/target_cpu.h +++ b/linux-user/mips/target_cpu.h @@ -33,4 +33,8 @@ static inline void cpu_set_tls(CPUMIPSState *env, target_ulong newtls) env->active_tc.CP0_UserLocal = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUMIPSState *state) +{ + return state->active_tc.gpr[29]; +} #endif diff --git a/linux-user/mips/target_signal.h b/linux-user/mips/target_signal.h index d36f5da0a0..5f68bd7634 100644 --- a/linux-user/mips/target_signal.h +++ b/linux-user/mips/target_signal.h @@ -1,8 +1,6 @@ #ifndef MIPS_TARGET_SIGNAL_H #define MIPS_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,11 +19,6 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUMIPSState *state) -{ - return state->active_tc.gpr[29]; -} - #if defined(TARGET_ABI_MIPSO32) /* compare linux/arch/mips/kernel/signal.c:setup_frame() */ #define TARGET_ARCH_HAS_SETUP_FRAME diff --git a/linux-user/mips64/target_signal.h b/linux-user/mips64/target_signal.h index c074e1592f..7fe6b2f517 100644 --- a/linux-user/mips64/target_signal.h +++ b/linux-user/mips64/target_signal.h @@ -1,8 +1,6 @@ #ifndef MIPS64_TARGET_SIGNAL_H #define MIPS64_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,8 +19,4 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUMIPSState *state) -{ - return state->active_tc.gpr[29]; -} #endif /* MIPS64_TARGET_SIGNAL_H */ diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index 9a0b36e5ad..4985dc2212 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/nios2/target_cpu.h b/linux-user/nios2/target_cpu.h index 20ab4790a9..14f63338fa 100644 --- a/linux-user/nios2/target_cpu.h +++ b/linux-user/nios2/target_cpu.h @@ -36,4 +36,8 @@ static inline void cpu_set_tls(CPUNios2State *env, target_ulong newtls) */ } +static inline abi_ulong get_sp_from_cpustate(CPUNios2State *state) +{ + return state->regs[R_SP]; +} #endif diff --git a/linux-user/nios2/target_signal.h b/linux-user/nios2/target_signal.h index f4db4d6d62..1f09f1e6bb 100644 --- a/linux-user/nios2/target_signal.h +++ b/linux-user/nios2/target_signal.h @@ -1,8 +1,6 @@ #ifndef TARGET_SIGNAL_H #define TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -18,8 +16,4 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUNios2State *state) -{ - return state->regs[R_SP]; -} #endif /* TARGET_SIGNAL_H */ diff --git a/linux-user/openrisc/signal.c b/linux-user/openrisc/signal.c index ecf2897ccd..8be0b74001 100644 --- a/linux-user/openrisc/signal.c +++ b/linux-user/openrisc/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/openrisc/target_cpu.h b/linux-user/openrisc/target_cpu.h index 606ad6f695..d1ea4506e2 100644 --- a/linux-user/openrisc/target_cpu.h +++ b/linux-user/openrisc/target_cpu.h @@ -33,4 +33,8 @@ static inline void cpu_set_tls(CPUOpenRISCState *env, target_ulong newtls) cpu_set_gpr(env, 10, newtls); } +static inline abi_ulong get_sp_from_cpustate(CPUOpenRISCState *state) +{ + return cpu_get_gpr(state, 1); +} #endif diff --git a/linux-user/openrisc/target_signal.h b/linux-user/openrisc/target_signal.h index 2a4e00b035..590383302c 100644 --- a/linux-user/openrisc/target_signal.h +++ b/linux-user/openrisc/target_signal.h @@ -1,8 +1,6 @@ #ifndef OPENRISC_TARGET_SIGNAL_H #define OPENRISC_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -18,8 +16,4 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUOpenRISCState *state) -{ - return cpu_get_gpr(state, 1); -} #endif /* OPENRISC_TARGET_SIGNAL_H */ diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c index cacc9afb5a..ef4c518f11 100644 --- a/linux-user/ppc/signal.c +++ b/linux-user/ppc/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/ppc/target_cpu.h b/linux-user/ppc/target_cpu.h index 3aab3d185d..c4641834e7 100644 --- a/linux-user/ppc/target_cpu.h +++ b/linux-user/ppc/target_cpu.h @@ -47,5 +47,8 @@ static inline uint32_t get_ppc64_abi(struct image_info *infop) return infop->elf_flags & EF_PPC64_ABI; } - +static inline abi_ulong get_sp_from_cpustate(CPUPPCState *state) +{ + return state->gpr[1]; +} #endif diff --git a/linux-user/ppc/target_signal.h b/linux-user/ppc/target_signal.h index e3bf1d2856..6f9e67e321 100644 --- a/linux-user/ppc/target_signal.h +++ b/linux-user/ppc/target_signal.h @@ -1,8 +1,6 @@ #ifndef PPC_TARGET_SIGNAL_H #define PPC_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,11 +19,6 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUPPCState *state) -{ - return state->gpr[1]; -} - #if !defined(TARGET_PPC64) #define TARGET_ARCH_HAS_SETUP_FRAME #endif diff --git a/linux-user/qemu.h b/linux-user/qemu.h index c55c8e294b..6fa1e968db 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -623,7 +623,6 @@ static inline void *lock_user_string(abi_ulong guest_addr) * above, so include them last. */ #include "target_cpu.h" -#include "target_signal.h" #include "target_structs.h" #endif /* QEMU_H */ diff --git a/linux-user/riscv/signal.c b/linux-user/riscv/signal.c index ef599e319a..f598d41891 100644 --- a/linux-user/riscv/signal.c +++ b/linux-user/riscv/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/riscv/target_cpu.h b/linux-user/riscv/target_cpu.h index c5549b1120..7e090f376a 100644 --- a/linux-user/riscv/target_cpu.h +++ b/linux-user/riscv/target_cpu.h @@ -15,4 +15,8 @@ static inline void cpu_set_tls(CPURISCVState *env, target_ulong newtls) env->gpr[xTP] = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPURISCVState *state) +{ + return state->gpr[xSP]; +} #endif diff --git a/linux-user/riscv/target_signal.h b/linux-user/riscv/target_signal.h index 9dac002c0d..c7fa357008 100644 --- a/linux-user/riscv/target_signal.h +++ b/linux-user/riscv/target_signal.h @@ -1,8 +1,6 @@ #ifndef TARGET_SIGNAL_H #define TARGET_SIGNAL_H -#include "cpu.h" - typedef struct target_sigaltstack { abi_ulong ss_sp; abi_int ss_flags; @@ -15,8 +13,4 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPURISCVState *state) -{ - return state->gpr[xSP]; -} #endif /* TARGET_SIGNAL_H */ diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index e35cbe6870..3d3cb67bbe 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/s390x/target_cpu.h b/linux-user/s390x/target_cpu.h index 87ea4d2d9b..66ef8aa8c2 100644 --- a/linux-user/s390x/target_cpu.h +++ b/linux-user/s390x/target_cpu.h @@ -36,4 +36,8 @@ static inline void cpu_set_tls(CPUS390XState *env, target_ulong newtls) env->aregs[1] = newtls & 0xffffffffULL; } +static inline abi_ulong get_sp_from_cpustate(CPUS390XState *state) +{ + return state->regs[15]; +} #endif diff --git a/linux-user/s390x/target_signal.h b/linux-user/s390x/target_signal.h index 4e99f8fadd..8f41ccf9b2 100644 --- a/linux-user/s390x/target_signal.h +++ b/linux-user/s390x/target_signal.h @@ -1,8 +1,6 @@ #ifndef S390X_TARGET_SIGNAL_H #define S390X_TARGET_SIGNAL_H -#include "cpu.h" - typedef struct target_sigaltstack { abi_ulong ss_sp; int ss_flags; @@ -18,10 +16,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUS390XState *state) -{ - return state->regs[15]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* S390X_TARGET_SIGNAL_H */ diff --git a/linux-user/sh4/signal.c b/linux-user/sh4/signal.c index 2a5378e16e..c6752baa7e 100644 --- a/linux-user/sh4/signal.c +++ b/linux-user/sh4/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/sh4/target_cpu.h b/linux-user/sh4/target_cpu.h index 9d305d2833..1a647ddb98 100644 --- a/linux-user/sh4/target_cpu.h +++ b/linux-user/sh4/target_cpu.h @@ -32,4 +32,8 @@ static inline void cpu_set_tls(CPUSH4State *env, target_ulong newtls) env->gbr = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUSH4State *state) +{ + return state->gregs[15]; +} #endif diff --git a/linux-user/sh4/target_signal.h b/linux-user/sh4/target_signal.h index e7b18a6db4..2bdc24c48e 100644 --- a/linux-user/sh4/target_signal.h +++ b/linux-user/sh4/target_signal.h @@ -1,8 +1,6 @@ #ifndef SH4_TARGET_SIGNAL_H #define SH4_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,10 +19,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUSH4State *state) -{ - return state->gregs[15]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* SH4_TARGET_SIGNAL_H */ diff --git a/linux-user/signal.c b/linux-user/signal.c index 01de433e3a..be2815b45d 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -23,7 +23,6 @@ #include "qemu.h" #include "qemu-common.h" -#include "target_signal.h" #include "trace.h" #include "signal-common.h" diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 45e922f328..55e9d6f9b2 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/sparc/target_cpu.h b/linux-user/sparc/target_cpu.h index f2fe526204..1ffc0ae9f2 100644 --- a/linux-user/sparc/target_cpu.h +++ b/linux-user/sparc/target_cpu.h @@ -41,4 +41,15 @@ static inline void cpu_set_tls(CPUSPARCState *env, target_ulong newtls) env->gregs[7] = newtls; } +#ifndef UREG_I6 +#define UREG_I6 6 +#endif +#ifndef UREG_FP +#define UREG_FP UREG_I6 +#endif + +static inline abi_ulong get_sp_from_cpustate(CPUSPARCState *state) +{ + return state->regwptr[UREG_FP]; +} #endif diff --git a/linux-user/sparc/target_signal.h b/linux-user/sparc/target_signal.h index 467abea49e..bfa19bbb67 100644 --- a/linux-user/sparc/target_signal.h +++ b/linux-user/sparc/target_signal.h @@ -1,8 +1,6 @@ #ifndef SPARC_TARGET_SIGNAL_H #define SPARC_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,17 +19,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 4096 #define TARGET_SIGSTKSZ 16384 -#ifndef UREG_I6 -#define UREG_I6 6 -#endif -#ifndef UREG_FP -#define UREG_FP UREG_I6 -#endif - -static inline abi_ulong get_sp_from_cpustate(CPUSPARCState *state) -{ - return state->regwptr[UREG_FP]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* SPARC_TARGET_SIGNAL_H */ diff --git a/linux-user/sparc64/target_signal.h b/linux-user/sparc64/target_signal.h index 14b01d9632..1d804bfe86 100644 --- a/linux-user/sparc64/target_signal.h +++ b/linux-user/sparc64/target_signal.h @@ -1,8 +1,6 @@ #ifndef SPARC64_TARGET_SIGNAL_H #define SPARC64_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,17 +19,5 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 4096 #define TARGET_SIGSTKSZ 16384 -#ifndef UREG_I6 -#define UREG_I6 6 -#endif -#ifndef UREG_FP -#define UREG_FP UREG_I6 -#endif - -static inline abi_ulong get_sp_from_cpustate(CPUSPARCState *state) -{ - return state->regwptr[UREG_FP]; -} - #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* SPARC64_TARGET_SIGNAL_H */ diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index fbf1bf995a..85e0d870d8 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -482,6 +482,8 @@ int do_sigaction(int sig, const struct target_sigaction *act, #define TARGET_SA_RESTORER 0x04000000 #endif +#include "target_signal.h" + #ifdef TARGET_SA_RESTORER #define TARGET_ARCH_HAS_SA_RESTORER 1 #endif diff --git a/linux-user/tilegx/signal.c b/linux-user/tilegx/signal.c index d0ed3de569..c5a1c7161d 100644 --- a/linux-user/tilegx/signal.c +++ b/linux-user/tilegx/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/tilegx/target_cpu.h b/linux-user/tilegx/target_cpu.h index 4878e01b03..d1aa5824f2 100644 --- a/linux-user/tilegx/target_cpu.h +++ b/linux-user/tilegx/target_cpu.h @@ -32,4 +32,8 @@ static inline void cpu_set_tls(CPUTLGState *env, target_ulong newtls) env->regs[TILEGX_R_TP] = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUTLGState *state) +{ + return state->regs[TILEGX_R_SP]; +} #endif diff --git a/linux-user/tilegx/target_signal.h b/linux-user/tilegx/target_signal.h index a74fa37aac..4cb8c56adf 100644 --- a/linux-user/tilegx/target_signal.h +++ b/linux-user/tilegx/target_signal.h @@ -1,8 +1,6 @@ #ifndef TILEGX_TARGET_SIGNAL_H #define TILEGX_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -20,8 +18,4 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUTLGState *state) -{ - return state->regs[TILEGX_R_SP]; -} #endif /* TILEGX_TARGET_SIGNAL_H */ diff --git a/linux-user/x86_64/target_signal.h b/linux-user/x86_64/target_signal.h index 6b01b5acb7..be054d1e59 100644 --- a/linux-user/x86_64/target_signal.h +++ b/linux-user/x86_64/target_signal.h @@ -1,8 +1,6 @@ #ifndef X86_64_TARGET_SIGNAL_H #define X86_64_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -21,8 +19,4 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUX86State *state) -{ - return state->regs[R_ESP]; -} #endif /* X86_64_TARGET_SIGNAL_H */ diff --git a/linux-user/xtensa/signal.c b/linux-user/xtensa/signal.c index 3e483efc61..8d54ef3ae3 100644 --- a/linux-user/xtensa/signal.c +++ b/linux-user/xtensa/signal.c @@ -18,7 +18,6 @@ */ #include "qemu/osdep.h" #include "qemu.h" -#include "target_signal.h" #include "signal-common.h" #include "linux-user/trace.h" diff --git a/linux-user/xtensa/target_cpu.h b/linux-user/xtensa/target_cpu.h index 747d828614..e31efe3ea0 100644 --- a/linux-user/xtensa/target_cpu.h +++ b/linux-user/xtensa/target_cpu.h @@ -19,4 +19,8 @@ static inline void cpu_set_tls(CPUXtensaState *env, target_ulong newtls) env->uregs[THREADPTR] = newtls; } +static inline abi_ulong get_sp_from_cpustate(CPUXtensaState *state) +{ + return state->regs[1]; +} #endif diff --git a/linux-user/xtensa/target_signal.h b/linux-user/xtensa/target_signal.h index 4376b2e538..de03c0a564 100644 --- a/linux-user/xtensa/target_signal.h +++ b/linux-user/xtensa/target_signal.h @@ -1,8 +1,6 @@ #ifndef XTENSA_TARGET_SIGNAL_H #define XTENSA_TARGET_SIGNAL_H -#include "cpu.h" - /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -20,8 +18,4 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 -static inline abi_ulong get_sp_from_cpustate(CPUXtensaState *state) -{ - return state->regs[1]; -} #endif From e5171a9eb9a580b874a7e69aebaf7bf2a89818c2 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:42:01 +0200 Subject: [PATCH 11/17] linux-user: move generic signal definitions to generic/signal.h No code change. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-10-laurent@vivier.eu> --- linux-user/aarch64/target_signal.h | 2 + linux-user/arm/target_signal.h | 2 + linux-user/cris/target_signal.h | 2 + linux-user/generic/signal.h | 57 +++++++++++++++++++++++++++ linux-user/i386/target_signal.h | 2 + linux-user/m68k/target_signal.h | 2 + linux-user/microblaze/target_signal.h | 2 + linux-user/nios2/target_signal.h | 2 + linux-user/openrisc/target_signal.h | 2 + linux-user/ppc/target_signal.h | 2 + linux-user/riscv/target_signal.h | 2 + linux-user/s390x/target_signal.h | 2 + linux-user/sh4/target_signal.h | 2 + linux-user/syscall_defs.h | 50 ----------------------- linux-user/tilegx/target_signal.h | 2 + linux-user/x86_64/target_signal.h | 2 + linux-user/xtensa/target_signal.h | 2 + 17 files changed, 87 insertions(+), 50 deletions(-) create mode 100644 linux-user/generic/signal.h diff --git a/linux-user/aarch64/target_signal.h b/linux-user/aarch64/target_signal.h index 18599b1447..ddd73169f0 100644 --- a/linux-user/aarch64/target_signal.h +++ b/linux-user/aarch64/target_signal.h @@ -19,5 +19,7 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* AARCH64_TARGET_SIGNAL_H */ diff --git a/linux-user/arm/target_signal.h b/linux-user/arm/target_signal.h index f80eb0a215..ea123c40f3 100644 --- a/linux-user/arm/target_signal.h +++ b/linux-user/arm/target_signal.h @@ -19,5 +19,7 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* ARM_TARGET_SIGNAL_H */ diff --git a/linux-user/cris/target_signal.h b/linux-user/cris/target_signal.h index bf404a85fd..1cb5548f85 100644 --- a/linux-user/cris/target_signal.h +++ b/linux-user/cris/target_signal.h @@ -19,5 +19,7 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* CRIS_TARGET_SIGNAL_H */ diff --git a/linux-user/generic/signal.h b/linux-user/generic/signal.h new file mode 100644 index 0000000000..e1083f8fba --- /dev/null +++ b/linux-user/generic/signal.h @@ -0,0 +1,57 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation, or (at your option) any + * later version. See the COPYING file in the top-level directory. + */ + +#ifndef GENERIC_SIGNAL_H +#define GENERIC_SIGNAL_H + +#define TARGET_SA_NOCLDSTOP 0x00000001 +#define TARGET_SA_NOCLDWAIT 0x00000002 /* not supported yet */ +#define TARGET_SA_SIGINFO 0x00000004 +#define TARGET_SA_ONSTACK 0x08000000 +#define TARGET_SA_RESTART 0x10000000 +#define TARGET_SA_NODEFER 0x40000000 +#define TARGET_SA_RESETHAND 0x80000000 +#define TARGET_SA_RESTORER 0x04000000 + +#define TARGET_SIGHUP 1 +#define TARGET_SIGINT 2 +#define TARGET_SIGQUIT 3 +#define TARGET_SIGILL 4 +#define TARGET_SIGTRAP 5 +#define TARGET_SIGABRT 6 +#define TARGET_SIGIOT 6 +#define TARGET_SIGBUS 7 +#define TARGET_SIGFPE 8 +#define TARGET_SIGKILL 9 +#define TARGET_SIGUSR1 10 +#define TARGET_SIGSEGV 11 +#define TARGET_SIGUSR2 12 +#define TARGET_SIGPIPE 13 +#define TARGET_SIGALRM 14 +#define TARGET_SIGTERM 15 +#define TARGET_SIGSTKFLT 16 +#define TARGET_SIGCHLD 17 +#define TARGET_SIGCONT 18 +#define TARGET_SIGSTOP 19 +#define TARGET_SIGTSTP 20 +#define TARGET_SIGTTIN 21 +#define TARGET_SIGTTOU 22 +#define TARGET_SIGURG 23 +#define TARGET_SIGXCPU 24 +#define TARGET_SIGXFSZ 25 +#define TARGET_SIGVTALRM 26 +#define TARGET_SIGPROF 27 +#define TARGET_SIGWINCH 28 +#define TARGET_SIGIO 29 +#define TARGET_SIGPWR 30 +#define TARGET_SIGSYS 31 +#define TARGET_SIGRTMIN 32 + +#define TARGET_SIG_BLOCK 0 /* for blocking signals */ +#define TARGET_SIG_UNBLOCK 1 /* for unblocking signals */ +#define TARGET_SIG_SETMASK 2 /* for setting the signal mask */ +#endif diff --git a/linux-user/i386/target_signal.h b/linux-user/i386/target_signal.h index 8a284f4b57..f55e78fd33 100644 --- a/linux-user/i386/target_signal.h +++ b/linux-user/i386/target_signal.h @@ -19,5 +19,7 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* I386_TARGET_SIGNAL_H */ diff --git a/linux-user/m68k/target_signal.h b/linux-user/m68k/target_signal.h index 0cf26b79e5..314e808844 100644 --- a/linux-user/m68k/target_signal.h +++ b/linux-user/m68k/target_signal.h @@ -19,5 +19,7 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* M68K_TARGET_SIGNAL_H */ diff --git a/linux-user/microblaze/target_signal.h b/linux-user/microblaze/target_signal.h index 86adcc1fc9..35efd5e928 100644 --- a/linux-user/microblaze/target_signal.h +++ b/linux-user/microblaze/target_signal.h @@ -19,5 +19,7 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* MICROBLAZE_TARGET_SIGNAL_H */ diff --git a/linux-user/nios2/target_signal.h b/linux-user/nios2/target_signal.h index 1f09f1e6bb..7776bcdbfd 100644 --- a/linux-user/nios2/target_signal.h +++ b/linux-user/nios2/target_signal.h @@ -16,4 +16,6 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #endif /* TARGET_SIGNAL_H */ diff --git a/linux-user/openrisc/target_signal.h b/linux-user/openrisc/target_signal.h index 590383302c..3ccbb974d9 100644 --- a/linux-user/openrisc/target_signal.h +++ b/linux-user/openrisc/target_signal.h @@ -16,4 +16,6 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #endif /* OPENRISC_TARGET_SIGNAL_H */ diff --git a/linux-user/ppc/target_signal.h b/linux-user/ppc/target_signal.h index 6f9e67e321..4453e2e7ef 100644 --- a/linux-user/ppc/target_signal.h +++ b/linux-user/ppc/target_signal.h @@ -19,6 +19,8 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #if !defined(TARGET_PPC64) #define TARGET_ARCH_HAS_SETUP_FRAME #endif diff --git a/linux-user/riscv/target_signal.h b/linux-user/riscv/target_signal.h index c7fa357008..c8b1455800 100644 --- a/linux-user/riscv/target_signal.h +++ b/linux-user/riscv/target_signal.h @@ -13,4 +13,6 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #endif /* TARGET_SIGNAL_H */ diff --git a/linux-user/s390x/target_signal.h b/linux-user/s390x/target_signal.h index 8f41ccf9b2..b58bc7c20f 100644 --- a/linux-user/s390x/target_signal.h +++ b/linux-user/s390x/target_signal.h @@ -16,5 +16,7 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* S390X_TARGET_SIGNAL_H */ diff --git a/linux-user/sh4/target_signal.h b/linux-user/sh4/target_signal.h index 2bdc24c48e..434970a990 100644 --- a/linux-user/sh4/target_signal.h +++ b/linux-user/sh4/target_signal.h @@ -19,5 +19,7 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #define TARGET_ARCH_HAS_SETUP_FRAME #endif /* SH4_TARGET_SIGNAL_H */ diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 85e0d870d8..44dc7831d6 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -471,15 +471,6 @@ int do_sigaction(int sig, const struct target_sigaction *act, #define TARGET_SA_NODEFER 0x00000020 #define TARGET_SA_RESTART 0x00000040 #define TARGET_SA_NOCLDWAIT 0x00000080 -#else -#define TARGET_SA_NOCLDSTOP 0x00000001 -#define TARGET_SA_NOCLDWAIT 0x00000002 /* not supported yet */ -#define TARGET_SA_SIGINFO 0x00000004 -#define TARGET_SA_ONSTACK 0x08000000 -#define TARGET_SA_RESTART 0x10000000 -#define TARGET_SA_NODEFER 0x40000000 -#define TARGET_SA_RESETHAND 0x80000000 -#define TARGET_SA_RESTORER 0x04000000 #endif #include "target_signal.h" @@ -650,47 +641,6 @@ int do_sigaction(int sig, const struct target_sigaction *act, #define TARGET_SIG_UNBLOCK 1 #define TARGET_SIG_SETMASK 2 -#else - -/* OpenRISC Using the general signals */ -#define TARGET_SIGHUP 1 -#define TARGET_SIGINT 2 -#define TARGET_SIGQUIT 3 -#define TARGET_SIGILL 4 -#define TARGET_SIGTRAP 5 -#define TARGET_SIGABRT 6 -#define TARGET_SIGIOT 6 -#define TARGET_SIGBUS 7 -#define TARGET_SIGFPE 8 -#define TARGET_SIGKILL 9 -#define TARGET_SIGUSR1 10 -#define TARGET_SIGSEGV 11 -#define TARGET_SIGUSR2 12 -#define TARGET_SIGPIPE 13 -#define TARGET_SIGALRM 14 -#define TARGET_SIGTERM 15 -#define TARGET_SIGSTKFLT 16 -#define TARGET_SIGCHLD 17 -#define TARGET_SIGCONT 18 -#define TARGET_SIGSTOP 19 -#define TARGET_SIGTSTP 20 -#define TARGET_SIGTTIN 21 -#define TARGET_SIGTTOU 22 -#define TARGET_SIGURG 23 -#define TARGET_SIGXCPU 24 -#define TARGET_SIGXFSZ 25 -#define TARGET_SIGVTALRM 26 -#define TARGET_SIGPROF 27 -#define TARGET_SIGWINCH 28 -#define TARGET_SIGIO 29 -#define TARGET_SIGPWR 30 -#define TARGET_SIGSYS 31 -#define TARGET_SIGRTMIN 32 - -#define TARGET_SIG_BLOCK 0 /* for blocking signals */ -#define TARGET_SIG_UNBLOCK 1 /* for unblocking signals */ -#define TARGET_SIG_SETMASK 2 /* for setting the signal mask */ - #endif #if defined(TARGET_ALPHA) diff --git a/linux-user/tilegx/target_signal.h b/linux-user/tilegx/target_signal.h index 4cb8c56adf..655be13009 100644 --- a/linux-user/tilegx/target_signal.h +++ b/linux-user/tilegx/target_signal.h @@ -18,4 +18,6 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #endif /* TILEGX_TARGET_SIGNAL_H */ diff --git a/linux-user/x86_64/target_signal.h b/linux-user/x86_64/target_signal.h index be054d1e59..4c4380f7b9 100644 --- a/linux-user/x86_64/target_signal.h +++ b/linux-user/x86_64/target_signal.h @@ -19,4 +19,6 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #endif /* X86_64_TARGET_SIGNAL_H */ diff --git a/linux-user/xtensa/target_signal.h b/linux-user/xtensa/target_signal.h index de03c0a564..c60bf656f6 100644 --- a/linux-user/xtensa/target_signal.h +++ b/linux-user/xtensa/target_signal.h @@ -18,4 +18,6 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 +#include "../generic/signal.h" + #endif From 1bdefb5ac73a8a5f7cc4858627424ea88d6db6de Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:42:02 +0200 Subject: [PATCH 12/17] linux-user: move sparc signal definitions to sparc/target_signal.h Remove sparc64/target_signal.h, use sparc/target_signal.h instead. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-11-laurent@vivier.eu> --- linux-user/sparc/target_signal.h | 48 +++++++++++++++++++++++++++ linux-user/sparc64/signal.c | 1 - linux-user/sparc64/target_signal.h | 24 +------------- linux-user/syscall_defs.h | 52 +----------------------------- 4 files changed, 50 insertions(+), 75 deletions(-) diff --git a/linux-user/sparc/target_signal.h b/linux-user/sparc/target_signal.h index bfa19bbb67..5cc40327d2 100644 --- a/linux-user/sparc/target_signal.h +++ b/linux-user/sparc/target_signal.h @@ -1,6 +1,44 @@ #ifndef SPARC_TARGET_SIGNAL_H #define SPARC_TARGET_SIGNAL_H +#define TARGET_SIGHUP 1 +#define TARGET_SIGINT 2 +#define TARGET_SIGQUIT 3 +#define TARGET_SIGILL 4 +#define TARGET_SIGTRAP 5 +#define TARGET_SIGABRT 6 +#define TARGET_SIGIOT 6 +#define TARGET_SIGSTKFLT 7 /* actually EMT */ +#define TARGET_SIGFPE 8 +#define TARGET_SIGKILL 9 +#define TARGET_SIGBUS 10 +#define TARGET_SIGSEGV 11 +#define TARGET_SIGSYS 12 +#define TARGET_SIGPIPE 13 +#define TARGET_SIGALRM 14 +#define TARGET_SIGTERM 15 +#define TARGET_SIGURG 16 +#define TARGET_SIGSTOP 17 +#define TARGET_SIGTSTP 18 +#define TARGET_SIGCONT 19 +#define TARGET_SIGCHLD 20 +#define TARGET_SIGTTIN 21 +#define TARGET_SIGTTOU 22 +#define TARGET_SIGIO 23 +#define TARGET_SIGXCPU 24 +#define TARGET_SIGXFSZ 25 +#define TARGET_SIGVTALRM 26 +#define TARGET_SIGPROF 27 +#define TARGET_SIGWINCH 28 +#define TARGET_SIGPWR 29 +#define TARGET_SIGUSR1 30 +#define TARGET_SIGUSR2 31 +#define TARGET_SIGRTMIN 32 + +#define TARGET_SIG_BLOCK 0x01 /* for blocking signals */ +#define TARGET_SIG_UNBLOCK 0x02 /* for unblocking signals */ +#define TARGET_SIG_SETMASK 0x04 /* for setting the signal mask */ + /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -16,6 +54,16 @@ typedef struct target_sigaltstack { #define TARGET_SS_ONSTACK 1 #define TARGET_SS_DISABLE 2 +#define TARGET_SA_NOCLDSTOP 8u +#define TARGET_SA_NOCLDWAIT 0x100u +#define TARGET_SA_SIGINFO 0x200u +#define TARGET_SA_ONSTACK 1u +#define TARGET_SA_RESTART 2u +#define TARGET_SA_NODEFER 0x20u +#define TARGET_SA_RESETHAND 4u +#define TARGET_ARCH_HAS_SA_RESTORER 1 +#define TARGET_ARCH_HAS_KA_RESTORER 1 + #define TARGET_MINSIGSTKSZ 4096 #define TARGET_SIGSTKSZ 16384 diff --git a/linux-user/sparc64/signal.c b/linux-user/sparc64/signal.c index c263eb0f08..170ebac232 100644 --- a/linux-user/sparc64/signal.c +++ b/linux-user/sparc64/signal.c @@ -16,5 +16,4 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ -#define SPARC_TARGET_SIGNAL_H /* to only include sparc64/target_signal.h */ #include "../sparc/signal.c" diff --git a/linux-user/sparc64/target_signal.h b/linux-user/sparc64/target_signal.h index 1d804bfe86..6a7d57d024 100644 --- a/linux-user/sparc64/target_signal.h +++ b/linux-user/sparc64/target_signal.h @@ -1,23 +1 @@ -#ifndef SPARC64_TARGET_SIGNAL_H -#define SPARC64_TARGET_SIGNAL_H - -/* this struct defines a stack used during syscall handling */ - -typedef struct target_sigaltstack { - abi_ulong ss_sp; - abi_long ss_flags; - abi_ulong ss_size; -} target_stack_t; - - -/* - * sigaltstack controls - */ -#define TARGET_SS_ONSTACK 1 -#define TARGET_SS_DISABLE 2 - -#define TARGET_MINSIGSTKSZ 4096 -#define TARGET_SIGSTKSZ 16384 - -#define TARGET_ARCH_HAS_SETUP_FRAME -#endif /* SPARC64_TARGET_SIGNAL_H */ +#include "../sparc/target_signal.h" diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 44dc7831d6..0034156c6b 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -426,17 +426,7 @@ int do_sigaction(int sig, const struct target_sigaction *act, || defined(TARGET_TILEGX) || defined(TARGET_HPPA) || defined(TARGET_NIOS2) \ || defined(TARGET_RISCV) || defined(TARGET_XTENSA) -#if defined(TARGET_SPARC) -#define TARGET_SA_NOCLDSTOP 8u -#define TARGET_SA_NOCLDWAIT 0x100u -#define TARGET_SA_SIGINFO 0x200u -#define TARGET_SA_ONSTACK 1u -#define TARGET_SA_RESTART 2u -#define TARGET_SA_NODEFER 0x20u -#define TARGET_SA_RESETHAND 4u -#define TARGET_ARCH_HAS_SA_RESTORER 1 -#define TARGET_ARCH_HAS_KA_RESTORER 1 -#elif defined(TARGET_MIPS) +#if defined(TARGET_MIPS) #define TARGET_SA_NOCLDSTOP 0x00000001 #define TARGET_SA_NOCLDWAIT 0x00010000 #define TARGET_SA_SIGINFO 0x00000008 @@ -518,46 +508,6 @@ int do_sigaction(int sig, const struct target_sigaction *act, #define TARGET_SIG_UNBLOCK 2 #define TARGET_SIG_SETMASK 3 -#elif defined(TARGET_SPARC) - -#define TARGET_SIGHUP 1 -#define TARGET_SIGINT 2 -#define TARGET_SIGQUIT 3 -#define TARGET_SIGILL 4 -#define TARGET_SIGTRAP 5 -#define TARGET_SIGABRT 6 -#define TARGET_SIGIOT 6 -#define TARGET_SIGSTKFLT 7 /* actually EMT */ -#define TARGET_SIGFPE 8 -#define TARGET_SIGKILL 9 -#define TARGET_SIGBUS 10 -#define TARGET_SIGSEGV 11 -#define TARGET_SIGSYS 12 -#define TARGET_SIGPIPE 13 -#define TARGET_SIGALRM 14 -#define TARGET_SIGTERM 15 -#define TARGET_SIGURG 16 -#define TARGET_SIGSTOP 17 -#define TARGET_SIGTSTP 18 -#define TARGET_SIGCONT 19 -#define TARGET_SIGCHLD 20 -#define TARGET_SIGTTIN 21 -#define TARGET_SIGTTOU 22 -#define TARGET_SIGIO 23 -#define TARGET_SIGXCPU 24 -#define TARGET_SIGXFSZ 25 -#define TARGET_SIGVTALRM 26 -#define TARGET_SIGPROF 27 -#define TARGET_SIGWINCH 28 -#define TARGET_SIGPWR 29 -#define TARGET_SIGUSR1 30 -#define TARGET_SIGUSR2 31 -#define TARGET_SIGRTMIN 32 - -#define TARGET_SIG_BLOCK 0x01 /* for blocking signals */ -#define TARGET_SIG_UNBLOCK 0x02 /* for unblocking signals */ -#define TARGET_SIG_SETMASK 0x04 /* for setting the signal mask */ - #elif defined(TARGET_MIPS) #define TARGET_SIGHUP 1 /* Hangup (POSIX). */ From f70c731347406cbd2bc79ab466415e21061fef96 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:42:03 +0200 Subject: [PATCH 13/17] linux-user: move mips signal definitions to mips/target_signal.h No code change. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-12-laurent@vivier.eu> --- linux-user/mips/target_signal.h | 50 +++++++++++++++++++++++++++ linux-user/mips64/target_signal.h | 49 +++++++++++++++++++++++++++ linux-user/syscall_defs.h | 56 +------------------------------ 3 files changed, 100 insertions(+), 55 deletions(-) diff --git a/linux-user/mips/target_signal.h b/linux-user/mips/target_signal.h index 5f68bd7634..66e1ad44a6 100644 --- a/linux-user/mips/target_signal.h +++ b/linux-user/mips/target_signal.h @@ -1,6 +1,47 @@ #ifndef MIPS_TARGET_SIGNAL_H #define MIPS_TARGET_SIGNAL_H +#define TARGET_SIGHUP 1 /* Hangup (POSIX). */ +#define TARGET_SIGINT 2 /* Interrupt (ANSI). */ +#define TARGET_SIGQUIT 3 /* Quit (POSIX). */ +#define TARGET_SIGILL 4 /* Illegal instruction (ANSI). */ +#define TARGET_SIGTRAP 5 /* Trace trap (POSIX). */ +#define TARGET_SIGIOT 6 /* IOT trap (4.2 BSD). */ +#define TARGET_SIGABRT TARGET_SIGIOT /* Abort (ANSI). */ +#define TARGET_SIGEMT 7 +#define TARGET_SIGSTKFLT 7 /* XXX: incorrect */ +#define TARGET_SIGFPE 8 /* Floating-point exception (ANSI). */ +#define TARGET_SIGKILL 9 /* Kill, unblockable (POSIX). */ +#define TARGET_SIGBUS 10 /* BUS error (4.2 BSD). */ +#define TARGET_SIGSEGV 11 /* Segmentation violation (ANSI). */ +#define TARGET_SIGSYS 12 +#define TARGET_SIGPIPE 13 /* Broken pipe (POSIX). */ +#define TARGET_SIGALRM 14 /* Alarm clock (POSIX). */ +#define TARGET_SIGTERM 15 /* Termination (ANSI). */ +#define TARGET_SIGUSR1 16 /* User-defined signal 1 (POSIX). */ +#define TARGET_SIGUSR2 17 /* User-defined signal 2 (POSIX). */ +#define TARGET_SIGCHLD 18 /* Child status has changed (POSIX). */ +#define TARGET_SIGCLD TARGET_SIGCHLD /* Same as TARGET_SIGCHLD (System V). */ +#define TARGET_SIGPWR 19 /* Power failure restart (System V). */ +#define TARGET_SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */ +#define TARGET_SIGURG 21 /* Urgent condition on socket (4.2 BSD). */ +#define TARGET_SIGIO 22 /* I/O now possible (4.2 BSD). */ +#define TARGET_SIGPOLL TARGET_SIGIO /* Pollable event occurred (System V). */ +#define TARGET_SIGSTOP 23 /* Stop, unblockable (POSIX). */ +#define TARGET_SIGTSTP 24 /* Keyboard stop (POSIX). */ +#define TARGET_SIGCONT 25 /* Continue (POSIX). */ +#define TARGET_SIGTTIN 26 /* Background read from tty (POSIX). */ +#define TARGET_SIGTTOU 27 /* Background write to tty (POSIX). */ +#define TARGET_SIGVTALRM 28 /* Virtual alarm clock (4.2 BSD). */ +#define TARGET_SIGPROF 29 /* Profiling alarm clock (4.2 BSD). */ +#define TARGET_SIGXCPU 30 /* CPU limit exceeded (4.2 BSD). */ +#define TARGET_SIGXFSZ 31 /* File size limit exceeded (4.2 BSD). */ +#define TARGET_SIGRTMIN 32 + +#define TARGET_SIG_BLOCK 1 /* for blocking signals */ +#define TARGET_SIG_UNBLOCK 2 /* for unblocking signals */ +#define TARGET_SIG_SETMASK 3 /* for setting the signal mask */ + /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -16,6 +57,15 @@ typedef struct target_sigaltstack { #define TARGET_SS_ONSTACK 1 #define TARGET_SS_DISABLE 2 +#define TARGET_SA_NOCLDSTOP 0x00000001 +#define TARGET_SA_NOCLDWAIT 0x00010000 +#define TARGET_SA_SIGINFO 0x00000008 +#define TARGET_SA_ONSTACK 0x08000000 +#define TARGET_SA_NODEFER 0x40000000 +#define TARGET_SA_RESTART 0x10000000 +#define TARGET_SA_RESETHAND 0x80000000 +#define TARGET_SA_RESTORER 0x04000000 /* Only for O32 */ + #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 diff --git a/linux-user/mips64/target_signal.h b/linux-user/mips64/target_signal.h index 7fe6b2f517..753e91fbd6 100644 --- a/linux-user/mips64/target_signal.h +++ b/linux-user/mips64/target_signal.h @@ -1,6 +1,47 @@ #ifndef MIPS64_TARGET_SIGNAL_H #define MIPS64_TARGET_SIGNAL_H +#define TARGET_SIGHUP 1 /* Hangup (POSIX). */ +#define TARGET_SIGINT 2 /* Interrupt (ANSI). */ +#define TARGET_SIGQUIT 3 /* Quit (POSIX). */ +#define TARGET_SIGILL 4 /* Illegal instruction (ANSI). */ +#define TARGET_SIGTRAP 5 /* Trace trap (POSIX). */ +#define TARGET_SIGIOT 6 /* IOT trap (4.2 BSD). */ +#define TARGET_SIGABRT TARGET_SIGIOT /* Abort (ANSI). */ +#define TARGET_SIGEMT 7 +#define TARGET_SIGSTKFLT 7 /* XXX: incorrect */ +#define TARGET_SIGFPE 8 /* Floating-point exception (ANSI). */ +#define TARGET_SIGKILL 9 /* Kill, unblockable (POSIX). */ +#define TARGET_SIGBUS 10 /* BUS error (4.2 BSD). */ +#define TARGET_SIGSEGV 11 /* Segmentation violation (ANSI). */ +#define TARGET_SIGSYS 12 +#define TARGET_SIGPIPE 13 /* Broken pipe (POSIX). */ +#define TARGET_SIGALRM 14 /* Alarm clock (POSIX). */ +#define TARGET_SIGTERM 15 /* Termination (ANSI). */ +#define TARGET_SIGUSR1 16 /* User-defined signal 1 (POSIX). */ +#define TARGET_SIGUSR2 17 /* User-defined signal 2 (POSIX). */ +#define TARGET_SIGCHLD 18 /* Child status has changed (POSIX). */ +#define TARGET_SIGCLD TARGET_SIGCHLD /* Same as TARGET_SIGCHLD (System V). */ +#define TARGET_SIGPWR 19 /* Power failure restart (System V). */ +#define TARGET_SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */ +#define TARGET_SIGURG 21 /* Urgent condition on socket (4.2 BSD). */ +#define TARGET_SIGIO 22 /* I/O now possible (4.2 BSD). */ +#define TARGET_SIGPOLL TARGET_SIGIO /* Pollable event occurred (System V). */ +#define TARGET_SIGSTOP 23 /* Stop, unblockable (POSIX). */ +#define TARGET_SIGTSTP 24 /* Keyboard stop (POSIX). */ +#define TARGET_SIGCONT 25 /* Continue (POSIX). */ +#define TARGET_SIGTTIN 26 /* Background read from tty (POSIX). */ +#define TARGET_SIGTTOU 27 /* Background write to tty (POSIX). */ +#define TARGET_SIGVTALRM 28 /* Virtual alarm clock (4.2 BSD). */ +#define TARGET_SIGPROF 29 /* Profiling alarm clock (4.2 BSD). */ +#define TARGET_SIGXCPU 30 /* CPU limit exceeded (4.2 BSD). */ +#define TARGET_SIGXFSZ 31 /* File size limit exceeded (4.2 BSD). */ +#define TARGET_SIGRTMIN 32 + +#define TARGET_SIG_BLOCK 1 /* for blocking signals */ +#define TARGET_SIG_UNBLOCK 2 /* for unblocking signals */ +#define TARGET_SIG_SETMASK 3 /* for setting the signal mask */ + /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -16,6 +57,14 @@ typedef struct target_sigaltstack { #define TARGET_SS_ONSTACK 1 #define TARGET_SS_DISABLE 2 +#define TARGET_SA_NOCLDSTOP 0x00000001 +#define TARGET_SA_NOCLDWAIT 0x00010000 +#define TARGET_SA_SIGINFO 0x00000008 +#define TARGET_SA_ONSTACK 0x08000000 +#define TARGET_SA_NODEFER 0x40000000 +#define TARGET_SA_RESTART 0x10000000 +#define TARGET_SA_RESETHAND 0x80000000 + #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 0034156c6b..21d3ef5559 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -426,18 +426,7 @@ int do_sigaction(int sig, const struct target_sigaction *act, || defined(TARGET_TILEGX) || defined(TARGET_HPPA) || defined(TARGET_NIOS2) \ || defined(TARGET_RISCV) || defined(TARGET_XTENSA) -#if defined(TARGET_MIPS) -#define TARGET_SA_NOCLDSTOP 0x00000001 -#define TARGET_SA_NOCLDWAIT 0x00010000 -#define TARGET_SA_SIGINFO 0x00000008 -#define TARGET_SA_ONSTACK 0x08000000 -#define TARGET_SA_NODEFER 0x40000000 -#define TARGET_SA_RESTART 0x10000000 -#define TARGET_SA_RESETHAND 0x80000000 -#if !defined(TARGET_ABI_MIPSN32) && !defined(TARGET_ABI_MIPSN64) -#define TARGET_SA_RESTORER 0x04000000 /* Only for O32 */ -#endif -#elif defined(TARGET_OPENRISC) +#if defined(TARGET_OPENRISC) #define TARGET_SA_NOCLDSTOP 0x00000001 #define TARGET_SA_NOCLDWAIT 0x00000002 #define TARGET_SA_SIGINFO 0x00000004 @@ -508,49 +497,6 @@ int do_sigaction(int sig, const struct target_sigaction *act, #define TARGET_SIG_UNBLOCK 2 #define TARGET_SIG_SETMASK 3 -#elif defined(TARGET_MIPS) - -#define TARGET_SIGHUP 1 /* Hangup (POSIX). */ -#define TARGET_SIGINT 2 /* Interrupt (ANSI). */ -#define TARGET_SIGQUIT 3 /* Quit (POSIX). */ -#define TARGET_SIGILL 4 /* Illegal instruction (ANSI). */ -#define TARGET_SIGTRAP 5 /* Trace trap (POSIX). */ -#define TARGET_SIGIOT 6 /* IOT trap (4.2 BSD). */ -#define TARGET_SIGABRT TARGET_SIGIOT /* Abort (ANSI). */ -#define TARGET_SIGEMT 7 -#define TARGET_SIGSTKFLT 7 /* XXX: incorrect */ -#define TARGET_SIGFPE 8 /* Floating-point exception (ANSI). */ -#define TARGET_SIGKILL 9 /* Kill, unblockable (POSIX). */ -#define TARGET_SIGBUS 10 /* BUS error (4.2 BSD). */ -#define TARGET_SIGSEGV 11 /* Segmentation violation (ANSI). */ -#define TARGET_SIGSYS 12 -#define TARGET_SIGPIPE 13 /* Broken pipe (POSIX). */ -#define TARGET_SIGALRM 14 /* Alarm clock (POSIX). */ -#define TARGET_SIGTERM 15 /* Termination (ANSI). */ -#define TARGET_SIGUSR1 16 /* User-defined signal 1 (POSIX). */ -#define TARGET_SIGUSR2 17 /* User-defined signal 2 (POSIX). */ -#define TARGET_SIGCHLD 18 /* Child status has changed (POSIX). */ -#define TARGET_SIGCLD TARGET_SIGCHLD /* Same as TARGET_SIGCHLD (System V). */ -#define TARGET_SIGPWR 19 /* Power failure restart (System V). */ -#define TARGET_SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */ -#define TARGET_SIGURG 21 /* Urgent condition on socket (4.2 BSD). */ -#define TARGET_SIGIO 22 /* I/O now possible (4.2 BSD). */ -#define TARGET_SIGPOLL TARGET_SIGIO /* Pollable event occurred (System V). */ -#define TARGET_SIGSTOP 23 /* Stop, unblockable (POSIX). */ -#define TARGET_SIGTSTP 24 /* Keyboard stop (POSIX). */ -#define TARGET_SIGCONT 25 /* Continue (POSIX). */ -#define TARGET_SIGTTIN 26 /* Background read from tty (POSIX). */ -#define TARGET_SIGTTOU 27 /* Background write to tty (POSIX). */ -#define TARGET_SIGVTALRM 28 /* Virtual alarm clock (4.2 BSD). */ -#define TARGET_SIGPROF 29 /* Profiling alarm clock (4.2 BSD). */ -#define TARGET_SIGXCPU 30 /* CPU limit exceeded (4.2 BSD). */ -#define TARGET_SIGXFSZ 31 /* File size limit exceeded (4.2 BSD). */ -#define TARGET_SIGRTMIN 32 - -#define TARGET_SIG_BLOCK 1 /* for blocking signals */ -#define TARGET_SIG_UNBLOCK 2 /* for unblocking signals */ -#define TARGET_SIG_SETMASK 3 /* for setting the signal mask */ - #elif defined(TARGET_HPPA) #define TARGET_SIGHUP 1 From 5795083b1616545910d9508b663008beb016fd6a Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:42:04 +0200 Subject: [PATCH 14/17] linux-user: move openrisc signal definitions to openrisc/target_signal.h No code change. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-13-laurent@vivier.eu> --- linux-user/openrisc/target_signal.h | 8 ++++++++ linux-user/syscall_defs.h | 10 +--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/linux-user/openrisc/target_signal.h b/linux-user/openrisc/target_signal.h index 3ccbb974d9..c352a8b333 100644 --- a/linux-user/openrisc/target_signal.h +++ b/linux-user/openrisc/target_signal.h @@ -13,6 +13,14 @@ typedef struct target_sigaltstack { #define TARGET_SS_ONSTACK 1 #define TARGET_SS_DISABLE 2 +#define TARGET_SA_NOCLDSTOP 0x00000001 +#define TARGET_SA_NOCLDWAIT 0x00000002 +#define TARGET_SA_SIGINFO 0x00000004 +#define TARGET_SA_ONSTACK 0x08000000 +#define TARGET_SA_RESTART 0x10000000 +#define TARGET_SA_NODEFER 0x40000000 +#define TARGET_SA_RESETHAND 0x80000000 + #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 21d3ef5559..360d37c9c0 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -426,15 +426,7 @@ int do_sigaction(int sig, const struct target_sigaction *act, || defined(TARGET_TILEGX) || defined(TARGET_HPPA) || defined(TARGET_NIOS2) \ || defined(TARGET_RISCV) || defined(TARGET_XTENSA) -#if defined(TARGET_OPENRISC) -#define TARGET_SA_NOCLDSTOP 0x00000001 -#define TARGET_SA_NOCLDWAIT 0x00000002 -#define TARGET_SA_SIGINFO 0x00000004 -#define TARGET_SA_ONSTACK 0x08000000 -#define TARGET_SA_RESTART 0x10000000 -#define TARGET_SA_NODEFER 0x40000000 -#define TARGET_SA_RESETHAND 0x80000000 -#elif defined(TARGET_ALPHA) +#if defined(TARGET_ALPHA) #define TARGET_SA_ONSTACK 0x00000001 #define TARGET_SA_RESTART 0x00000002 #define TARGET_SA_NOCLDSTOP 0x00000004 From 3e511153a810c779c85b2ae8058fb3d41188b6d9 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:42:05 +0200 Subject: [PATCH 15/17] linux-user: move alpha signal definitions to alpha/target_signal.h No code change. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-14-laurent@vivier.eu> --- linux-user/alpha/target_signal.h | 45 ++++++++++++++++++++++++++++ linux-user/syscall_defs.h | 51 ++------------------------------ 2 files changed, 47 insertions(+), 49 deletions(-) diff --git a/linux-user/alpha/target_signal.h b/linux-user/alpha/target_signal.h index e6f2f04911..cd63d59fde 100644 --- a/linux-user/alpha/target_signal.h +++ b/linux-user/alpha/target_signal.h @@ -1,6 +1,43 @@ #ifndef ALPHA_TARGET_SIGNAL_H #define ALPHA_TARGET_SIGNAL_H +#define TARGET_SIGHUP 1 +#define TARGET_SIGINT 2 +#define TARGET_SIGQUIT 3 +#define TARGET_SIGILL 4 +#define TARGET_SIGTRAP 5 +#define TARGET_SIGABRT 6 +#define TARGET_SIGSTKFLT 7 /* actually SIGEMT */ +#define TARGET_SIGFPE 8 +#define TARGET_SIGKILL 9 +#define TARGET_SIGBUS 10 +#define TARGET_SIGSEGV 11 +#define TARGET_SIGSYS 12 +#define TARGET_SIGPIPE 13 +#define TARGET_SIGALRM 14 +#define TARGET_SIGTERM 15 +#define TARGET_SIGURG 16 +#define TARGET_SIGSTOP 17 +#define TARGET_SIGTSTP 18 +#define TARGET_SIGCONT 19 +#define TARGET_SIGCHLD 20 +#define TARGET_SIGTTIN 21 +#define TARGET_SIGTTOU 22 +#define TARGET_SIGIO 23 +#define TARGET_SIGXCPU 24 +#define TARGET_SIGXFSZ 25 +#define TARGET_SIGVTALRM 26 +#define TARGET_SIGPROF 27 +#define TARGET_SIGWINCH 28 +#define TARGET_SIGPWR 29 /* actually SIGINFO */ +#define TARGET_SIGUSR1 30 +#define TARGET_SIGUSR2 31 +#define TARGET_SIGRTMIN 32 + +#define TARGET_SIG_BLOCK 1 +#define TARGET_SIG_UNBLOCK 2 +#define TARGET_SIG_SETMASK 3 + /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -17,6 +54,14 @@ typedef struct target_sigaltstack { #define TARGET_SS_ONSTACK 1 #define TARGET_SS_DISABLE 2 +#define TARGET_SA_ONSTACK 0x00000001 +#define TARGET_SA_RESTART 0x00000002 +#define TARGET_SA_NOCLDSTOP 0x00000004 +#define TARGET_SA_NODEFER 0x00000008 +#define TARGET_SA_RESETHAND 0x00000010 +#define TARGET_SA_NOCLDWAIT 0x00000020 /* not supported yet */ +#define TARGET_SA_SIGINFO 0x00000040 + #define TARGET_MINSIGSTKSZ 4096 #define TARGET_SIGSTKSZ 16384 diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 360d37c9c0..8436875005 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -426,15 +426,7 @@ int do_sigaction(int sig, const struct target_sigaction *act, || defined(TARGET_TILEGX) || defined(TARGET_HPPA) || defined(TARGET_NIOS2) \ || defined(TARGET_RISCV) || defined(TARGET_XTENSA) -#if defined(TARGET_ALPHA) -#define TARGET_SA_ONSTACK 0x00000001 -#define TARGET_SA_RESTART 0x00000002 -#define TARGET_SA_NOCLDSTOP 0x00000004 -#define TARGET_SA_NODEFER 0x00000008 -#define TARGET_SA_RESETHAND 0x00000010 -#define TARGET_SA_NOCLDWAIT 0x00000020 /* not supported yet */ -#define TARGET_SA_SIGINFO 0x00000040 -#elif defined(TARGET_HPPA) +#if defined(TARGET_HPPA) #define TARGET_SA_ONSTACK 0x00000001 #define TARGET_SA_RESETHAND 0x00000004 #define TARGET_SA_NOCLDSTOP 0x00000008 @@ -450,46 +442,7 @@ int do_sigaction(int sig, const struct target_sigaction *act, #define TARGET_ARCH_HAS_SA_RESTORER 1 #endif -#if defined(TARGET_ALPHA) - -#define TARGET_SIGHUP 1 -#define TARGET_SIGINT 2 -#define TARGET_SIGQUIT 3 -#define TARGET_SIGILL 4 -#define TARGET_SIGTRAP 5 -#define TARGET_SIGABRT 6 -#define TARGET_SIGSTKFLT 7 /* actually SIGEMT */ -#define TARGET_SIGFPE 8 -#define TARGET_SIGKILL 9 -#define TARGET_SIGBUS 10 -#define TARGET_SIGSEGV 11 -#define TARGET_SIGSYS 12 -#define TARGET_SIGPIPE 13 -#define TARGET_SIGALRM 14 -#define TARGET_SIGTERM 15 -#define TARGET_SIGURG 16 -#define TARGET_SIGSTOP 17 -#define TARGET_SIGTSTP 18 -#define TARGET_SIGCONT 19 -#define TARGET_SIGCHLD 20 -#define TARGET_SIGTTIN 21 -#define TARGET_SIGTTOU 22 -#define TARGET_SIGIO 23 -#define TARGET_SIGXCPU 24 -#define TARGET_SIGXFSZ 25 -#define TARGET_SIGVTALRM 26 -#define TARGET_SIGPROF 27 -#define TARGET_SIGWINCH 28 -#define TARGET_SIGPWR 29 /* actually SIGINFO */ -#define TARGET_SIGUSR1 30 -#define TARGET_SIGUSR2 31 -#define TARGET_SIGRTMIN 32 - -#define TARGET_SIG_BLOCK 1 -#define TARGET_SIG_UNBLOCK 2 -#define TARGET_SIG_SETMASK 3 - -#elif defined(TARGET_HPPA) +#if defined(TARGET_HPPA) #define TARGET_SIGHUP 1 #define TARGET_SIGINT 2 From db30b1aa8cab867d9790ba3ec593fc8a1784e48f Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:42:06 +0200 Subject: [PATCH 16/17] linux-user: move hppa signal definitions to hppa/target_signal.h No code change. Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-15-laurent@vivier.eu> --- linux-user/hppa/target_signal.h | 46 +++++++++++++++++++++++++++++ linux-user/syscall_defs.h | 52 --------------------------------- 2 files changed, 46 insertions(+), 52 deletions(-) diff --git a/linux-user/hppa/target_signal.h b/linux-user/hppa/target_signal.h index 1beae6485a..ba159ff8d0 100644 --- a/linux-user/hppa/target_signal.h +++ b/linux-user/hppa/target_signal.h @@ -1,6 +1,44 @@ #ifndef HPPA_TARGET_SIGNAL_H #define HPPA_TARGET_SIGNAL_H +#define TARGET_SIGHUP 1 +#define TARGET_SIGINT 2 +#define TARGET_SIGQUIT 3 +#define TARGET_SIGILL 4 +#define TARGET_SIGTRAP 5 +#define TARGET_SIGABRT 6 +#define TARGET_SIGIOT 6 +#define TARGET_SIGSTKFLT 7 +#define TARGET_SIGFPE 8 +#define TARGET_SIGKILL 9 +#define TARGET_SIGBUS 10 +#define TARGET_SIGSEGV 11 +#define TARGET_SIGXCPU 12 +#define TARGET_SIGPIPE 13 +#define TARGET_SIGALRM 14 +#define TARGET_SIGTERM 15 +#define TARGET_SIGUSR1 16 +#define TARGET_SIGUSR2 17 +#define TARGET_SIGCHLD 18 +#define TARGET_SIGPWR 19 +#define TARGET_SIGVTALRM 20 +#define TARGET_SIGPROF 21 +#define TARGET_SIGIO 22 +#define TARGET_SIGPOLL TARGET_SIGIO +#define TARGET_SIGWINCH 23 +#define TARGET_SIGSTOP 24 +#define TARGET_SIGTSTP 25 +#define TARGET_SIGCONT 26 +#define TARGET_SIGTTIN 27 +#define TARGET_SIGTTOU 28 +#define TARGET_SIGURG 29 +#define TARGET_SIGXFSZ 30 +#define TARGET_SIGSYS 31 + +#define TARGET_SIG_BLOCK 0 +#define TARGET_SIG_UNBLOCK 1 +#define TARGET_SIG_SETMASK 2 + /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { @@ -16,6 +54,14 @@ typedef struct target_sigaltstack { #define TARGET_SS_ONSTACK 1 #define TARGET_SS_DISABLE 2 +#define TARGET_SA_ONSTACK 0x00000001 +#define TARGET_SA_RESETHAND 0x00000004 +#define TARGET_SA_NOCLDSTOP 0x00000008 +#define TARGET_SA_SIGINFO 0x00000010 +#define TARGET_SA_NODEFER 0x00000020 +#define TARGET_SA_RESTART 0x00000040 +#define TARGET_SA_NOCLDWAIT 0x00000080 + #define TARGET_MINSIGSTKSZ 2048 #define TARGET_SIGSTKSZ 8192 diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 8436875005..e2896ae1b3 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -426,64 +426,12 @@ int do_sigaction(int sig, const struct target_sigaction *act, || defined(TARGET_TILEGX) || defined(TARGET_HPPA) || defined(TARGET_NIOS2) \ || defined(TARGET_RISCV) || defined(TARGET_XTENSA) -#if defined(TARGET_HPPA) -#define TARGET_SA_ONSTACK 0x00000001 -#define TARGET_SA_RESETHAND 0x00000004 -#define TARGET_SA_NOCLDSTOP 0x00000008 -#define TARGET_SA_SIGINFO 0x00000010 -#define TARGET_SA_NODEFER 0x00000020 -#define TARGET_SA_RESTART 0x00000040 -#define TARGET_SA_NOCLDWAIT 0x00000080 -#endif - #include "target_signal.h" #ifdef TARGET_SA_RESTORER #define TARGET_ARCH_HAS_SA_RESTORER 1 #endif -#if defined(TARGET_HPPA) - -#define TARGET_SIGHUP 1 -#define TARGET_SIGINT 2 -#define TARGET_SIGQUIT 3 -#define TARGET_SIGILL 4 -#define TARGET_SIGTRAP 5 -#define TARGET_SIGABRT 6 -#define TARGET_SIGIOT 6 -#define TARGET_SIGSTKFLT 7 -#define TARGET_SIGFPE 8 -#define TARGET_SIGKILL 9 -#define TARGET_SIGBUS 10 -#define TARGET_SIGSEGV 11 -#define TARGET_SIGXCPU 12 -#define TARGET_SIGPIPE 13 -#define TARGET_SIGALRM 14 -#define TARGET_SIGTERM 15 -#define TARGET_SIGUSR1 16 -#define TARGET_SIGUSR2 17 -#define TARGET_SIGCHLD 18 -#define TARGET_SIGPWR 19 -#define TARGET_SIGVTALRM 20 -#define TARGET_SIGPROF 21 -#define TARGET_SIGIO 22 -#define TARGET_SIGPOLL TARGET_SIGIO -#define TARGET_SIGWINCH 23 -#define TARGET_SIGSTOP 24 -#define TARGET_SIGTSTP 25 -#define TARGET_SIGCONT 26 -#define TARGET_SIGTTIN 27 -#define TARGET_SIGTTOU 28 -#define TARGET_SIGURG 29 -#define TARGET_SIGXFSZ 30 -#define TARGET_SIGSYS 31 - -#define TARGET_SIG_BLOCK 0 -#define TARGET_SIG_UNBLOCK 1 -#define TARGET_SIG_SETMASK 2 - -#endif - #if defined(TARGET_ALPHA) struct target_old_sigaction { abi_ulong _sa_handler; From 7ea65371ee6ba714c5b369b38dd608b128dab57c Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Tue, 29 May 2018 21:42:07 +0200 Subject: [PATCH 17/17] linux-user: remove useless #if Remove a "#if defined(XX) || defined(YY) || ..." with all available targets Signed-off-by: Laurent Vivier Message-Id: <20180529194207.31503-16-laurent@vivier.eu> --- linux-user/syscall_defs.h | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index e2896ae1b3..40bb60ef4c 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -418,14 +418,6 @@ struct target_sigaction; int do_sigaction(int sig, const struct target_sigaction *act, struct target_sigaction *oact); -#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) \ - || defined(TARGET_PPC) || defined(TARGET_MIPS) || defined(TARGET_SH4) \ - || defined(TARGET_M68K) || defined(TARGET_ALPHA) || defined(TARGET_CRIS) \ - || defined(TARGET_MICROBLAZE) \ - || defined(TARGET_S390X) || defined(TARGET_OPENRISC) \ - || defined(TARGET_TILEGX) || defined(TARGET_HPPA) || defined(TARGET_NIOS2) \ - || defined(TARGET_RISCV) || defined(TARGET_XTENSA) - #include "target_signal.h" #ifdef TARGET_SA_RESTORER @@ -666,8 +658,6 @@ typedef struct target_siginfo { #define TARGET_TRAP_BRANCH (3) /* process taken branch trap */ #define TARGET_TRAP_HWBKPT (4) /* hardware breakpoint/watchpoint */ -#endif /* defined(TARGET_I386) || defined(TARGET_ARM) */ - struct target_rlimit { abi_ulong rlim_cur; abi_ulong rlim_max;