From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31316 invoked by alias); 15 May 2013 06:53:50 -0000 Mailing-List: contact libc-ports-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: libc-ports-owner@sourceware.org Received: (qmail 31295 invoked by uid 89); 15 May 2013 06:53:49 -0000 X-Spam-SWARE-Status: No, score=-5.2 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RP_MATCHES_RCVD,TW_HW autolearn=ham version=3.3.1 Received: from e24smtp03.br.ibm.com (HELO e24smtp03.br.ibm.com) (32.104.18.24) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Wed, 15 May 2013 06:53:48 +0000 Received: from /spool/local by e24smtp03.br.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 15 May 2013 03:53:44 -0300 Received: from d24dlp01.br.ibm.com (9.18.248.204) by e24smtp03.br.ibm.com (10.172.0.139) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 15 May 2013 03:53:41 -0300 Received: from d24relay01.br.ibm.com (d24relay01.br.ibm.com [9.8.31.16]) by d24dlp01.br.ibm.com (Postfix) with ESMTP id 2421A3520027; Wed, 15 May 2013 02:53:41 -0400 (EDT) Received: from d24av04.br.ibm.com (d24av04.br.ibm.com [9.8.31.97]) by d24relay01.br.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r4F6oduY1851566; Wed, 15 May 2013 03:50:40 -0300 Received: from d24av04.br.ibm.com (localhost [127.0.0.1]) by d24av04.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id r4F6re8N013795; Wed, 15 May 2013 03:53:40 -0300 Received: from grandaddy.ibm.com ([9.8.1.114]) by d24av04.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id r4F6rd7Y013792; Wed, 15 May 2013 03:53:40 -0300 From: Edjunior Barbosa Machado To: carlos@redhat.com Cc: aj@suse.com, libc-alpha@sourceware.org, libc-ports@sourceware.org, naveen.n.rao@linux.vnet.ibm.com Subject: Re: [PATCH] Update bits/siginfo.h with Linux hwpoison SIGBUS changes Date: Wed, 15 May 2013 06:53:00 -0000 Message-Id: <1368600683-11773-1-git-send-email-emachado@linux.vnet.ibm.com> In-Reply-To: <5192A25A.1060406@redhat.com> X-TM-AS-MML: No X-Content-Scanned: Fidelis XPS MAILER x-cbid: 13051506-9254-0000-0000-00000C7DBBD1 X-SW-Source: 2013-05/txt/msg00063.txt.bz2 On 05/14/2013 05:45 PM, Carlos O'Donell wrote: > Please be very very careful when doing something like this. > > This is a potentially ABI changing event, adding elements to a public > structure like this requires an analysis to show the size of siginfo_t > didn't change. > > You don't confirm that so I'll ask explicitly. > > Did the size of siginfo_t change? Yes, I've checked for the struct sizes in the modified siginfo.h files and they didn't change with the inclusion of the new fields. They are still below the size of _sifields union. I'm resending the patch with the comments fixed (and a nitpick in another comment from tile/bits/siginfo.h). By the way, the ChangeLog entries are repeated because they're going to different ChangeLog files. Thanks Andreas and Carlos for the review. -- Edjunior ChangeLog.alpha: 2013-05-15 Edjunior Machado * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (siginfo_t): Add si_trapno and si_addr_lsb to _sifields.sigfault. (si_trapno, si_addr_lsb): Define new macros. (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values. ChangeLog.ia64: 2013-05-15 Edjunior Machado * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (siginfo_t): Add si_addr_lsb to _sifields.sigfault. (si_addr_lsb): Define new macro. (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values. ChangeLog.mips: 2013-05-15 Edjunior Machado * sysdeps/unix/sysv/linux/mips/bits/siginfo.h (siginfo_t): Add si_addr_lsb to _sifields.sifault. (si_addr_lsb): Define new macro. (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values. ChangeLog.tile: 2013-05-15 Edjunior Machado * sysdeps/unix/sysv/linux/tile/bits/siginfo.h (siginfo_t): Fix comment formatting. Add si_addr_lsb to _sifields.sigfault. (si_addr_lsb): Define new macro. (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values. ChangeLog: 2013-05-15 Edjunior Machado * sysdeps/unix/sysv/linux/bits/siginfo.h (siginfo_t): Add si_addr_lsb to _sifields.sigfault. (si_addr_lsb): Define new macro. (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values. * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. * sysdeps/unix/sysv/linux/x86/bits/siginfo.h: Likewise. --- ports/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h | 10 +++++++++- ports/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h | 8 +++++++- ports/sysdeps/unix/sysv/linux/mips/bits/siginfo.h | 8 +++++++- ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h | 10 ++++++++-- sysdeps/unix/sysv/linux/bits/siginfo.h | 8 +++++++- sysdeps/unix/sysv/linux/sparc/bits/siginfo.h | 8 +++++++- sysdeps/unix/sysv/linux/x86/bits/siginfo.h | 8 +++++++- 7 files changed, 52 insertions(+), 8 deletions(-) diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h index 1277885..7bfcb38 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h +++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h @@ -89,6 +89,8 @@ typedef struct struct { void *si_addr; /* Faulting insn/memory ref. */ + int si_trapno; /* TRAP # which caused the signal. */ + short si_addr_lsb; /* Valid LSB of the reported address. */ } _sigfault; /* SIGPOLL. */ @@ -121,6 +123,8 @@ typedef struct # define si_int _sifields._rt.si_sigval.sival_int # define si_ptr _sifields._rt.si_sigval.sival_ptr # define si_addr _sifields._sigfault.si_addr +# define si_trapno _sifields._sigfault.si_trapno +# define si_addr_lsb _sifields._sigfault.si_addr_lsb # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd # define si_call_addr _sifields._sigsys._call_addr @@ -211,8 +215,12 @@ enum # define BUS_ADRALN BUS_ADRALN BUS_ADRERR, /* Non-existant physical address. */ # define BUS_ADRERR BUS_ADRERR - BUS_OBJERR /* Object specific hardware error. */ + BUS_OBJERR, /* Object specific hardware error. */ # define BUS_OBJERR BUS_OBJERR + BUS_MCEERR_AR, /* Hardware memory error: action required. */ +# define BUS_MCEERR_AR BUS_MCEERR_AR + BUS_MCEERR_AO /* Hardware memory error: action optional. */ +# define BUS_MCEERR_AO BUS_MCEERR_AO }; /* `si_code' values for SIGTRAP signal. */ diff --git a/ports/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h b/ports/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h index 7887b45..98b77f1 100644 --- a/ports/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h +++ b/ports/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h @@ -94,6 +94,7 @@ typedef struct siginfo int _si_imm; unsigned int _si_flags; unsigned long int _si_isr; + short si_addr_lsb; /* Valid LSB of the reported address. */ } _sigfault; /* SIGPOLL. */ @@ -118,6 +119,7 @@ typedef struct siginfo # define si_int _sifields._rt.si_sigval.sival_int # define si_ptr _sifields._rt.si_sigval.sival_ptr # define si_addr _sifields._sigfault.si_addr +# define si_addr_lsb _sifields._sigfault.si_addr_lsb # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd @@ -233,8 +235,12 @@ enum # define BUS_ADRALN BUS_ADRALN BUS_ADRERR, /* Non-existant physical address. */ # define BUS_ADRERR BUS_ADRERR - BUS_OBJERR /* Object specific hardware error. */ + BUS_OBJERR, /* Object specific hardware error. */ # define BUS_OBJERR BUS_OBJERR + BUS_MCEERR_AR, /* Hardware memory error: action required. */ +# define BUS_MCEERR_AR BUS_MCEERR_AR + BUS_MCEERR_AO /* Hardware memory error: action optional. */ +# define BUS_MCEERR_AO BUS_MCEERR_AO }; /* `si_code' values for SIGTRAP signal. */ diff --git a/ports/sysdeps/unix/sysv/linux/mips/bits/siginfo.h b/ports/sysdeps/unix/sysv/linux/mips/bits/siginfo.h index 56ae34c..5e34677 100644 --- a/ports/sysdeps/unix/sysv/linux/mips/bits/siginfo.h +++ b/ports/sysdeps/unix/sysv/linux/mips/bits/siginfo.h @@ -98,6 +98,7 @@ typedef struct struct { void *si_addr; /* Faulting insn/memory ref. */ + short si_addr_lsb; /* Valid LSB of the reported address. */ } _sigfault; /* SIGPOLL. */ @@ -122,6 +123,7 @@ typedef struct # define si_int _sifields._rt.si_sigval.sival_int # define si_ptr _sifields._rt.si_sigval.sival_ptr # define si_addr _sifields._sigfault.si_addr +# define si_addr_lsb _sifields._sigfault.si_addr_lsb # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd @@ -209,8 +211,12 @@ enum # define BUS_ADRALN BUS_ADRALN BUS_ADRERR, /* Non-existant physical address. */ # define BUS_ADRERR BUS_ADRERR - BUS_OBJERR /* Object specific hardware error. */ + BUS_OBJERR, /* Object specific hardware error. */ # define BUS_OBJERR BUS_OBJERR + BUS_MCEERR_AR, /* Hardware memory error: action required. */ +# define BUS_MCEERR_AR BUS_MCEERR_AR + BUS_MCEERR_AO /* Hardware memory error: action optional. */ +# define BUS_MCEERR_AO BUS_MCEERR_AO }; /* `si_code' values for SIGTRAP signal. */ diff --git a/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h b/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h index 4ad1a5d..43a2f54 100644 --- a/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h +++ b/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h @@ -95,7 +95,8 @@ typedef struct struct { void *si_addr; /* Faulting insn/memory ref. */ - int si_trapno; /* TRAP # which caused the signal */ + int si_trapno; /* TRAP # which caused the signal. */ + short si_addr_lsb; /* Valid LSB of the reported address. */ } _sigfault; /* SIGPOLL. */ @@ -129,6 +130,7 @@ typedef struct # define si_ptr _sifields._rt.si_sigval.sival_ptr # define si_addr _sifields._sigfault.si_addr # define si_trapno _sifields._sigfault.si_trapno +# define si_addr_lsb _sifields._sigfault.si_addr_lsb # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd # define si_call_addr _sifields._sigsys._call_addr @@ -223,8 +225,12 @@ enum # define BUS_ADRALN BUS_ADRALN BUS_ADRERR, /* Non-existant physical address. */ # define BUS_ADRERR BUS_ADRERR - BUS_OBJERR /* Object specific hardware error. */ + BUS_OBJERR, /* Object specific hardware error. */ # define BUS_OBJERR BUS_OBJERR + BUS_MCEERR_AR, /* Hardware memory error: action required. */ +# define BUS_MCEERR_AR BUS_MCEERR_AR + BUS_MCEERR_AO /* Hardware memory error: action optional. */ +# define BUS_MCEERR_AO BUS_MCEERR_AO }; /* `si_code' values for SIGTRAP signal. */ diff --git a/sysdeps/unix/sysv/linux/bits/siginfo.h b/sysdeps/unix/sysv/linux/bits/siginfo.h index a67bd5c..cfae0c9 100644 --- a/sysdeps/unix/sysv/linux/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/bits/siginfo.h @@ -95,6 +95,7 @@ typedef struct struct { void *si_addr; /* Faulting insn/memory ref. */ + short si_addr_lsb; /* Valid LSB of the reported address. */ } _sigfault; /* SIGPOLL. */ @@ -127,6 +128,7 @@ typedef struct # define si_int _sifields._rt.si_sigval.sival_int # define si_ptr _sifields._rt.si_sigval.sival_ptr # define si_addr _sifields._sigfault.si_addr +# define si_addr_lsb _sifields._sigfault.si_addr_lsb # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd # define si_call_addr _sifields._sigsys._call_addr @@ -217,8 +219,12 @@ enum # define BUS_ADRALN BUS_ADRALN BUS_ADRERR, /* Non-existant physical address. */ # define BUS_ADRERR BUS_ADRERR - BUS_OBJERR /* Object specific hardware error. */ + BUS_OBJERR, /* Object specific hardware error. */ # define BUS_OBJERR BUS_OBJERR + BUS_MCEERR_AR, /* Hardware memory error: action required. */ +# define BUS_MCEERR_AR BUS_MCEERR_AR + BUS_MCEERR_AO /* Hardware memory error: action optional. */ +# define BUS_MCEERR_AO BUS_MCEERR_AO }; /* `si_code' values for SIGTRAP signal. */ diff --git a/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h b/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h index 85a5462..d4717dd 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h @@ -96,6 +96,7 @@ typedef struct { void *si_addr; /* Faulting insn/memory ref. */ int si_trapno; + short si_addr_lsb; /* Valid LSB of the reported address. */ } _sigfault; /* SIGPOLL. */ @@ -129,6 +130,7 @@ typedef struct # define si_ptr _sifields._rt.si_sigval.sival_ptr # define si_addr _sifields._sigfault.si_addr # define si_trapno _sifields._sigfault.si_trapno +# define si_addr_lsb _sifields._sigfault.si_addr_lsb # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd # define si_call_addr _sifields._sigsys._call_addr @@ -219,8 +221,12 @@ enum # define BUS_ADRALN BUS_ADRALN BUS_ADRERR, /* Non-existant physical address. */ # define BUS_ADRERR BUS_ADRERR - BUS_OBJERR /* Object specific hardware error. */ + BUS_OBJERR, /* Object specific hardware error. */ # define BUS_OBJERR BUS_OBJERR + BUS_MCEERR_AR, /* Hardware memory error: action required. */ +# define BUS_MCEERR_AR BUS_MCEERR_AR + BUS_MCEERR_AO /* Hardware memory error: action optional. */ +# define BUS_MCEERR_AO BUS_MCEERR_AO }; /* `si_code' values for SIGTRAP signal. */ diff --git a/sysdeps/unix/sysv/linux/x86/bits/siginfo.h b/sysdeps/unix/sysv/linux/x86/bits/siginfo.h index 48aef6d..a885918 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/x86/bits/siginfo.h @@ -107,6 +107,7 @@ typedef struct struct { void *si_addr; /* Faulting insn/memory ref. */ + short si_addr_lsb; /* Valid LSB of the reported address. */ } _sigfault; /* SIGPOLL. */ @@ -139,6 +140,7 @@ typedef struct # define si_int _sifields._rt.si_sigval.sival_int # define si_ptr _sifields._rt.si_sigval.sival_ptr # define si_addr _sifields._sigfault.si_addr +# define si_addr_lsb _sifields._sigfault.si_addr_lsb # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd # define si_call_addr _sifields._sigsys._call_addr @@ -229,8 +231,12 @@ enum # define BUS_ADRALN BUS_ADRALN BUS_ADRERR, /* Non-existant physical address. */ # define BUS_ADRERR BUS_ADRERR - BUS_OBJERR /* Object specific hardware error. */ + BUS_OBJERR, /* Object specific hardware error. */ # define BUS_OBJERR BUS_OBJERR + BUS_MCEERR_AR, /* Hardware memory error: action required. */ +# define BUS_MCEERR_AR BUS_MCEERR_AR + BUS_MCEERR_AO /* Hardware memory error: action optional. */ +# define BUS_MCEERR_AO BUS_MCEERR_AO }; /* `si_code' values for SIGTRAP signal. */ -- 1.7.1