Preparation for new siginfo on Linux
First add new structure and function to allow architecture customization for the siginfo structure. 2016-01-15 Walfred Tedeschi <walfred.tedeschi@intel.com> gdb/ChangeLog: * 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.
This commit is contained in:
parent
93813b37c8
commit
43564574f1
3 changed files with 32 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
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>
|
2016-02-02 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
||||||
|
|
||||||
* nat/amd64-linux-siginfo.c: New file.
|
* nat/amd64-linux-siginfo.c: New file.
|
||||||
|
|
|
@ -243,11 +243,12 @@ get_linux_inferior_data (void)
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function is suitable for architectures that don't
|
/* This function is suitable for architectures that
|
||||||
extend/override the standard siginfo structure. */
|
extend/override the standard siginfo in a specific way. */
|
||||||
|
|
||||||
static struct type *
|
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 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;
|
||||||
|
@ -364,6 +365,15 @@ linux_get_siginfo_type (struct gdbarch *gdbarch)
|
||||||
return siginfo_type;
|
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
|
/* Return true if the target is running on uClinux instead of normal
|
||||||
Linux kernel. */
|
Linux kernel. */
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,18 @@
|
||||||
|
|
||||||
struct regcache;
|
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 *,
|
typedef char *(*linux_collect_thread_registers_ftype) (const struct regcache *,
|
||||||
ptid_t,
|
ptid_t,
|
||||||
bfd *, char *, int *,
|
bfd *, char *, int *,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue