From: Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
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 [thread overview]
Message-ID: <1368600683-11773-1-git-send-email-emachado@linux.vnet.ibm.com> (raw)
In-Reply-To: <5192A25A.1060406@redhat.com>
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 <emachado@linux.vnet.ibm.com>
* 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 <emachado@linux.vnet.ibm.com>
* 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 <emachado@linux.vnet.ibm.com>
* 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 <emachado@linux.vnet.ibm.com>
* 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 <emachado@linux.vnet.ibm.com>
* 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
next prev parent reply other threads:[~2013-05-15 6:53 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-07 4:47 Edjunior Barbosa Machado
2013-05-14 18:32 ` Edjunior Barbosa Machado
2013-05-14 19:38 ` Andreas Jaeger
2013-05-14 20:45 ` Carlos O'Donell
2013-05-15 6:53 ` Edjunior Barbosa Machado [this message]
2013-05-17 0:43 ` Roland McGrath
2013-05-18 7:17 ` Edjunior Barbosa Machado
2013-05-22 20:09 ` Edjunior Barbosa Machado
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1368600683-11773-1-git-send-email-emachado@linux.vnet.ibm.com \
--to=emachado@linux.vnet.ibm.com \
--cc=aj@suse.com \
--cc=carlos@redhat.com \
--cc=libc-alpha@sourceware.org \
--cc=libc-ports@sourceware.org \
--cc=naveen.n.rao@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).