This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Add bound related fields to the siginfo structure


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=96b5c49fb18ba7ad070b0c3ad36388d56c5897fb

commit 96b5c49fb18ba7ad070b0c3ad36388d56c5897fb
Author: Walfred Tedeschi <walfred.tedeschi@intel.com>
Date:   Tue Feb 2 11:58:36 2016 +0100

    Add bound related fields to the siginfo structure
    
    Both Linux and glibc have introduced bound related fields in the
    segmentation fault fields of the siginfo_t type. Add the new fields
    to our x86's siginfo_t type too.
    
    Kernel patch:
    http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/commit/?id=ee1b58d36aa1b5a79eaba11f5c3633c88231da83
    
    Glibc patch:
    http://repo.or.cz/w/glibc.git/commit/d4358b51c26a634eb885955aea06cad26af6f696
    
    2016-02-02  Walfred Tedeschi  <walfred.tedeschi@intel.com>
    
    gdb/ChangeLog:
    
    	* linux-tdep.c (linux_get_siginfo_type): Add the _addr_bnd
    	structure to the siginfo if extra_fields contains
    	LINUX_SIGINFO_FIELD_ADDR_BND.

Diff:
---
 gdb/ChangeLog    |  7 ++++++-
 gdb/linux-tdep.c | 16 +++++++++++++++-
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 25f7f16..56bdc79 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
 2016-02-02  Walfred Tedeschi  <walfred.tedeschi@intel.com>
 
+	* linux-tdep.c (linux_get_siginfo_type): Add the _addr_bnd
+	structure to the siginfo if extra_fields contains
+	LINUX_SIGINFO_FIELD_ADDR_BND.
+
+2016-02-02  Walfred Tedeschi  <walfred.tedeschi@intel.com>
+
 	* linux-tdep.h (linux_get_siginfo_type_with_fields): Make extern.
 	* linux-tdep.c (linux_get_siginfo_type_with_fields): Make extern.
 	* i386-linux-tdep.h (x86_linux_get_siginfo_type): New
@@ -11,7 +17,6 @@
 	(i386_linux_init_abi): Add new function at the i386 ABI
 	initialization.
 
-
 2016-02-02  Walfred Tedeschi  <walfred.tedeschi@intel.com>
 
 	* linux-tdep.h (linux_siginfo_extra_field_values): New enum values.
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index cfbec40..555c302 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -250,7 +250,7 @@ linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch,
 				    linux_siginfo_extra_fields extra_fields)
 {
   struct linux_gdbarch_data *linux_gdbarch_data;
-  struct type *int_type, *uint_type, *long_type, *void_ptr_type;
+  struct type *int_type, *uint_type, *long_type, *void_ptr_type, *short_type;
   struct type *uid_type, *pid_type;
   struct type *sigval_type, *clock_type;
   struct type *siginfo_type, *sifields_type;
@@ -266,6 +266,8 @@ linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch,
 				 1, "unsigned int");
   long_type = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
 				 0, "long");
+  short_type = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
+				 0, "short");
   void_ptr_type = lookup_pointer_type (builtin_type (gdbarch)->builtin_void);
 
   /* sival_t */
@@ -341,6 +343,18 @@ linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch,
   /* _sigfault */
   type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
   append_composite_type_field (type, "si_addr", void_ptr_type);
+
+  /* Additional bound fields for _sigfault in case they were requested.  */
+  if ((extra_fields & LINUX_SIGINFO_FIELD_ADDR_BND) != 0)
+    {
+      struct type *sigfault_bnd_fields;
+
+      append_composite_type_field (type, "_addr_lsb", short_type);
+      sigfault_bnd_fields = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+      append_composite_type_field (sigfault_bnd_fields, "_lower", void_ptr_type);
+      append_composite_type_field (sigfault_bnd_fields, "_upper", void_ptr_type);
+      append_composite_type_field (type, "_addr_bnd", sigfault_bnd_fields);
+    }
   append_composite_type_field (sifields_type, "_sigfault", type);
 
   /* _sigpoll */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]