Browse Source

linux-user: Move TARGET_SA_RESTORER out of generic/signal.h

SA_RESTORER and the associated sa_restorer field of struct sigaction are
an obsolete feature, not expected to be used by future architectures.
They are also absent on RISC-V, LoongArch, Hexagon and OpenRISC, but
defined due to their use of generic/signal.h.  This leads to corrupted
data and out-of-bounds accesses.

Move the definition of TARGET_SA_RESTORER out of generic/signal.h into the
target_signal.h files that need it.  Note that m68k has the sa_restorer
field, but does not use it and does not define SA_RESTORER.

Reported-by: Thomas Weißschuh <thomas@t-8ch.de>
Signed-off-by: Andreas Schwab <schwab@suse.de>
Reviewed-by: Thomas Weißschuh <thomas@t-8ch.de>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <mvmed060xc9.fsf@suse.de>
pull/281/head^2
Andreas Schwab 1 year ago
committed by Richard Henderson
parent
commit
513823e752
  1. 2
      linux-user/aarch64/target_signal.h
  2. 2
      linux-user/arm/target_signal.h
  3. 1
      linux-user/generic/signal.h
  4. 2
      linux-user/i386/target_signal.h
  5. 1
      linux-user/m68k/target_signal.h
  6. 2
      linux-user/microblaze/target_signal.h
  7. 2
      linux-user/ppc/target_signal.h
  8. 2
      linux-user/s390x/target_signal.h
  9. 2
      linux-user/sh4/target_signal.h
  10. 2
      linux-user/x86_64/target_signal.h
  11. 2
      linux-user/xtensa/target_signal.h

2
linux-user/aarch64/target_signal.h

@ -3,6 +3,8 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_SA_RESTORER 0x04000000
#define TARGET_SEGV_MTEAERR 8 /* Asynchronous ARM MTE error */ #define TARGET_SEGV_MTEAERR 8 /* Asynchronous ARM MTE error */
#define TARGET_SEGV_MTESERR 9 /* Synchronous ARM MTE exception */ #define TARGET_SEGV_MTESERR 9 /* Synchronous ARM MTE exception */

2
linux-user/arm/target_signal.h

@ -3,6 +3,8 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_SA_RESTORER 0x04000000
#define TARGET_ARCH_HAS_SETUP_FRAME #define TARGET_ARCH_HAS_SETUP_FRAME
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1

1
linux-user/generic/signal.h

@ -15,7 +15,6 @@
#define TARGET_SA_RESTART 0x10000000 #define TARGET_SA_RESTART 0x10000000
#define TARGET_SA_NODEFER 0x40000000 #define TARGET_SA_NODEFER 0x40000000
#define TARGET_SA_RESETHAND 0x80000000 #define TARGET_SA_RESETHAND 0x80000000
#define TARGET_SA_RESTORER 0x04000000
#define TARGET_SIGHUP 1 #define TARGET_SIGHUP 1
#define TARGET_SIGINT 2 #define TARGET_SIGINT 2

2
linux-user/i386/target_signal.h

@ -3,6 +3,8 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_SA_RESTORER 0x04000000
#define TARGET_ARCH_HAS_SETUP_FRAME #define TARGET_ARCH_HAS_SETUP_FRAME
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1

1
linux-user/m68k/target_signal.h

@ -3,6 +3,7 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_ARCH_HAS_SA_RESTORER 1
#define TARGET_ARCH_HAS_SETUP_FRAME #define TARGET_ARCH_HAS_SETUP_FRAME
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1

2
linux-user/microblaze/target_signal.h

@ -3,6 +3,8 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_SA_RESTORER 0x04000000
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1
#endif /* MICROBLAZE_TARGET_SIGNAL_H */ #endif /* MICROBLAZE_TARGET_SIGNAL_H */

2
linux-user/ppc/target_signal.h

@ -3,6 +3,8 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_SA_RESTORER 0x04000000
#if !defined(TARGET_PPC64) #if !defined(TARGET_PPC64)
#define TARGET_ARCH_HAS_SETUP_FRAME #define TARGET_ARCH_HAS_SETUP_FRAME
#endif #endif

2
linux-user/s390x/target_signal.h

@ -3,6 +3,8 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_SA_RESTORER 0x04000000
#define TARGET_ARCH_HAS_SETUP_FRAME #define TARGET_ARCH_HAS_SETUP_FRAME
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1

2
linux-user/sh4/target_signal.h

@ -3,6 +3,8 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_SA_RESTORER 0x04000000
#define TARGET_ARCH_HAS_SETUP_FRAME #define TARGET_ARCH_HAS_SETUP_FRAME
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1

2
linux-user/x86_64/target_signal.h

@ -3,6 +3,8 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_SA_RESTORER 0x04000000
/* For x86_64, use of SA_RESTORER is mandatory. */ /* For x86_64, use of SA_RESTORER is mandatory. */
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 0 #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 0

2
linux-user/xtensa/target_signal.h

@ -3,6 +3,8 @@
#include "../generic/signal.h" #include "../generic/signal.h"
#define TARGET_SA_RESTORER 0x04000000
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1
#endif #endif

Loading…
Cancel
Save