This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH V3 2/6] Prepararion for new siginfo on Linux.
- From: Pedro Alves <palves at redhat dot com>
- To: Walfred Tedeschi <walfred dot tedeschi at intel dot com>, eliz at gnu dot org, brobecker at adacore dot com
- Cc: gdb-patches at sourceware dot org
- Date: Wed, 20 Jan 2016 18:56:17 +0000
- Subject: Re: [PATCH V3 2/6] Prepararion for new siginfo on Linux.
- Authentication-results: sourceware.org; auth=none
- References: <1453105544-30866-1-git-send-email-walfred dot tedeschi at intel dot com> <1453105544-30866-3-git-send-email-walfred dot tedeschi at intel dot com>
On 01/18/2016 08:25 AM, Walfred Tedeschi wrote:
> 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.
>
> ---
> gdb/linux-tdep.c | 16 +++++++++++++---
> gdb/linux-tdep.h | 10 ++++++++++
> 2 files changed, 23 insertions(+), 3 deletions(-)
>
> diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
> index 29f5f3c..48bed11 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 an specific way. */
"a specific"
>
> 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..98a17fa 100644
> --- a/gdb/linux-tdep.h
> +++ b/gdb/linux-tdep.h
> @@ -24,6 +24,16 @@
>
> struct regcache;
>
> +/* Enum used to define which kind of siginfo is used by the architecture. */
/* 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 fields. */
"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);
> +
Line too long.
> typedef char *(*linux_collect_thread_registers_ftype) (const struct regcache *,
> ptid_t,
> bfd *, char *, int *,
>
Otherwise OK.
Thanks,
Pedro Alves