This is the mail archive of the gdb-patches@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]

Re: [PATCH V3 2/6] Prepararion for new siginfo on Linux.


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


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