From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3525 invoked by alias); 14 May 2013 20:45:35 -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 3499 invoked by uid 89); 14 May 2013 20:45:33 -0000 X-Spam-SWARE-Status: No, score=-7.8 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS,TW_HW autolearn=ham version=3.3.1 X-Spam-User: qpsmtpd, 2 recipients Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 14 May 2013 20:45:31 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r4EKjFiN019650 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 14 May 2013 16:45:16 -0400 Received: from [10.3.113.76] (ovpn-113-76.phx2.redhat.com [10.3.113.76]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r4EKjEde027631; Tue, 14 May 2013 16:45:14 -0400 Message-ID: <5192A25A.1060406@redhat.com> Date: Tue, 14 May 2013 20:45:00 -0000 From: "Carlos O'Donell" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4 MIME-Version: 1.0 To: Edjunior Barbosa Machado CC: libc-alpha@sourceware.org, libc-ports@sourceware.org, naveen.n.rao@linux.vnet.ibm.com, Andreas Jaeger Subject: Re: [PATCH] Update bits/siginfo.h with Linux hwpoison SIGBUS changes References: <1367901958-331-1-git-send-email-emachado@linux.vnet.ibm.com> In-Reply-To: <1367901958-331-1-git-send-email-emachado@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-05/txt/msg00062.txt.bz2 On 05/07/2013 12:45 AM, Edjunior Barbosa Machado wrote: > This patch adds new SIGBUS error codes for hardware poison signals, syncing > with the current kernel headers (v3.9). It also adds si_trapno field for alpha. 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? > Ok? > -- > Edjunior > > ChangeLog.alpha: > 2013-05-07 Edjunior Machado > > * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (_sigfault): Add There is no such thing as _sigfault. There is `struct siginfo_t' and within that there is _sifields._sifault. I would write this as: * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (_sigfault): Add si_trapno and si_addr_lsb to _sifields.sifault. > si_trapno and si_addr_lsb. > (si_trapno, si_addr_lsb): Define new macros. > (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values. > > ChangeLog.ia64: > 2013-05-07 Edjunior Machado > > * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (_sigfault): Add Likewise. (not repeated). > si_addr_lsb. > (si_addr_lsb): Define new macro. > (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values. > > ChangeLog.mips: > 2013-05-07 Edjunior Machado > > * sysdeps/unix/sysv/linux/mips/bits/siginfo.h (_sigfault): Add > si_addr_lsb. > (si_addr_lsb): Define new macro. > (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values. > > ChangeLog.tile: > 2013-05-07 Edjunior Machado > > * sysdeps/unix/sysv/linux/tile/bits/siginfo.h (_sigfault): Add > si_addr_lsb. > (si_addr_lsb): Define new macro. > (BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values. > > ChangeLog: > 2013-05-07 Edjunior Machado > > * sysdeps/unix/sysv/linux/bits/siginfo.h (_sigfault): Add si_addr_lsb. > (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 | 8 +++++++- > 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, 51 insertions(+), 7 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..71e4424 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..33a41a6 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..150f2a6 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..81d9141 100644 > --- a/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h > +++ b/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h > @@ -96,6 +96,7 @@ typedef 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. */ > @@ -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..fcd27c3 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..f414aaf 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..044274d 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 */ Andreas already pointed out it shoudl be "/* Blah blah blah. */" (period + two spaces). > +# define BUS_MCEERR_AO BUS_MCEERR_AO > }; > > /* `si_code' values for SIGTRAP signal. */ > Cheers, Carlos.