BZ #18696: x86 bits/siginfo.h is out of date
Commit Message
X86 struct siginfo in kernel 3.19 has been changed by
commit ee1b58d36aa1b5a79eaba11f5c3633c88231da83
Author: Qiaowei Ren <qiaowei.ren@intel.com>
Date: Fri Nov 14 07:18:19 2014 -0800
mpx: Extend siginfo structure to include bound violation information
This patch adds new fields about bound violation into siginfo
structure. si_lower and si_upper are respectively lower bound
and upper bound when bound violation is caused.
This patch updates x86 struct siginfo to enable GDB with MPX support.
Fred and Dave, can you test the enclosed patch for
/usr/include/bits/siginfo.h on GDB with MPX support?
Thanks.
H.J.
-
[BZ #18696]
* sysdeps/unix/sysv/linux/x86/bits/siginfo.h (_sigfault): Add
si_addr_bnd.
(si_lower): New.
(si_upper): Likewise.
---
sysdeps/unix/sysv/linux/x86/bits/siginfo.h | 7 +++++++
1 file changed, 7 insertions(+)
Comments
On 07/20/2015 01:33 PM, H.J. Lu wrote:
> X86 struct siginfo in kernel 3.19 has been changed by
>
> commit ee1b58d36aa1b5a79eaba11f5c3633c88231da83
> Author: Qiaowei Ren <qiaowei.ren@intel.com>
> Date: Fri Nov 14 07:18:19 2014 -0800
>
> mpx: Extend siginfo structure to include bound violation information
>
> This patch adds new fields about bound violation into siginfo
> structure. si_lower and si_upper are respectively lower bound
> and upper bound when bound violation is caused.
>
> This patch updates x86 struct siginfo to enable GDB with MPX support.
>
> Fred and Dave, can you test the enclosed patch for
> /usr/include/bits/siginfo.h on GDB with MPX support?
>
> Thanks.
>
>
> H.J.
> -
> [BZ #18696]
> * sysdeps/unix/sysv/linux/x86/bits/siginfo.h (_sigfault): Add
> si_addr_bnd.
> (si_lower): New.
> (si_upper): Likewise.
Looks good to me.
c.
On 07/20/2015 10:33 AM, H.J. Lu wrote:
> Fred and Dave, can you test the enclosed patch for
> /usr/include/bits/siginfo.h on GDB with MPX support?
I tested this at runtime. It correctly lets me fetch si_upper and
si_lower. Thanks!
@@ -108,6 +108,11 @@ typedef struct
{
void *si_addr; /* Faulting insn/memory ref. */
short int si_addr_lsb; /* Valid LSB of the reported address. */
+ struct
+ {
+ void *_lower;
+ void *_upper;
+ } si_addr_bnd;
} _sigfault;
/* SIGPOLL. */
@@ -141,6 +146,8 @@ typedef struct
# 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_lower _sifields._sigfault.si_addr_bnd._lower
+# define si_upper _sifields._sigfault.si_addr_bnd._upper
# define si_band _sifields._sigpoll.si_band
# define si_fd _sifields._sigpoll.si_fd
# define si_call_addr _sifields._sigsys._call_addr