93 lines
2.0 KiB
Diff
93 lines
2.0 KiB
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Thu, 16 Jun 2016 11:32:49 +0100
|
|
Subject: MIPS: Fix ABI change in 4.6.2
|
|
Forwarded: not-needed
|
|
|
|
genksyms only looks at the (preprocessed) token stream of a struct
|
|
definition, not the real types, so commit 5daebc477da4 ("MIPS: Fix
|
|
siginfo.h to use strict posix types") results in a different hash
|
|
even though it doesn't change types.
|
|
|
|
--- a/arch/mips/include/uapi/asm/siginfo.h
|
|
+++ b/arch/mips/include/uapi/asm/siginfo.h
|
|
@@ -30,6 +30,8 @@
|
|
|
|
#include <asm-generic/siginfo.h>
|
|
|
|
+#ifndef __GENKSYMS__
|
|
+
|
|
/* We can't use generic siginfo_t, because our si_code and si_errno are swapped */
|
|
typedef struct siginfo {
|
|
int si_signo;
|
|
@@ -112,6 +114,70 @@ typedef struct siginfo {
|
|
} _sifields;
|
|
} siginfo_t;
|
|
|
|
+#else /* __GENKSYMS__ */
|
|
+
|
|
+/* Definition using the 'wrong' type names, to keep genksyms happy */
|
|
+typedef struct siginfo {
|
|
+ int si_signo;
|
|
+ int si_code;
|
|
+ int si_errno;
|
|
+ int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3];
|
|
+ union {
|
|
+ int _pad[SI_PAD_SIZE];
|
|
+ struct {
|
|
+ pid_t _pid;
|
|
+ __ARCH_SI_UID_T _uid;
|
|
+ } _kill;
|
|
+ struct {
|
|
+ timer_t _tid;
|
|
+ int _overrun;
|
|
+ char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
|
|
+ sigval_t _sigval;
|
|
+ int _sys_private;
|
|
+ } _timer;
|
|
+ struct {
|
|
+ pid_t _pid;
|
|
+ __ARCH_SI_UID_T _uid;
|
|
+ sigval_t _sigval;
|
|
+ } _rt;
|
|
+ struct {
|
|
+ pid_t _pid;
|
|
+ __ARCH_SI_UID_T _uid;
|
|
+ int _status;
|
|
+ clock_t _utime;
|
|
+ clock_t _stime;
|
|
+ } _sigchld;
|
|
+ struct {
|
|
+ pid_t _pid;
|
|
+ clock_t _utime;
|
|
+ int _status;
|
|
+ clock_t _stime;
|
|
+ } _irix_sigchld;
|
|
+ struct {
|
|
+ void __user *_addr;
|
|
+ short _addr_lsb;
|
|
+ union {
|
|
+ struct {
|
|
+ void __user *_lower;
|
|
+ void __user *_upper;
|
|
+ } _addr_bnd;
|
|
+ __u32 _pkey;
|
|
+ };
|
|
+ } _sigfault;
|
|
+ struct {
|
|
+ __ARCH_SI_BAND_T _band;
|
|
+ int _fd;
|
|
+ } _sigpoll;
|
|
+ struct {
|
|
+ void __user *_call_addr;
|
|
+ int _syscall;
|
|
+ unsigned int _arch;
|
|
+ } _sigsys;
|
|
+ } _sifields;
|
|
+} siginfo_t;
|
|
+
|
|
+#endif /* __GENKSYMS__ */
|
|
+
|
|
/*
|
|
* si_code values
|
|
* Again these have been chosen to be IRIX compatible.
|