diff options
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/linux-tdep.c | 16 | ||||
-rw-r--r-- | gdb/linux-tdep.h | 12 |
3 files changed, 32 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e6346ad..89526e5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2016-02-02 Walfred Tedeschi <walfred.tedeschi@intel.com> + * linux-tdep.h (linux_siginfo_extra_field_values): New enum values. + (linux_siginfo_extra_fields): New enum type. + * linux-tdep.c (linux_get_siginfo_type_with_fields): New function. + (linux_get_siginfo_type): Use new function. + +2016-02-02 Walfred Tedeschi <walfred.tedeschi@intel.com> + * nat/amd64-linux-siginfo.c: New file. * nat/amd64-linux-siginfo.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add nat/amd64-linux-siginfo.h. diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index 29f5f3c..3757306 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -243,11 +243,12 @@ get_linux_inferior_data (void) return info; } -/* This function is suitable for architectures that don't - extend/override the standard siginfo structure. */ +/* This function is suitable for architectures that + extend/override the standard siginfo in a specific way. */ static struct type * -linux_get_siginfo_type (struct gdbarch *gdbarch) +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; @@ -364,6 +365,15 @@ linux_get_siginfo_type (struct gdbarch *gdbarch) return siginfo_type; } +/* This function is suitable for architectures that don't + extend/override the standard siginfo structure. */ + +static struct type * +linux_get_siginfo_type (struct gdbarch *gdbarch) +{ + return linux_get_siginfo_type_with_fields (gdbarch, 0); +} + /* Return true if the target is running on uClinux instead of normal Linux kernel. */ diff --git a/gdb/linux-tdep.h b/gdb/linux-tdep.h index 328c7f0..b2680f8 100644 --- a/gdb/linux-tdep.h +++ b/gdb/linux-tdep.h @@ -24,6 +24,18 @@ struct regcache; +/* Enum used to define the extra fields of the siginfo type used by an + architecture. */ +enum linux_siginfo_extra_field_values +{ + /* Add bound fields into the segmentation fault field. */ + LINUX_SIGINFO_FIELD_ADDR_BND = 1 +}; + +/* Defines a type for the values defined in linux_siginfo_extra_field_values. */ +DEF_ENUM_FLAGS_TYPE (enum linux_siginfo_extra_field_values, + linux_siginfo_extra_fields); + typedef char *(*linux_collect_thread_registers_ftype) (const struct regcache *, ptid_t, bfd *, char *, int *, |