[PATCH, ARM] Support for value 3 of Tag_ABI_VFP_args ARM attribute

Joel Brobecker brobecker@adacore.com
Sun Dec 28 03:47:00 GMT 2014


> By mistake a small gdb patch was commited while commiting the binutils
> patch to support value 3 of Tag_ABI_VFP_args ARM attribute because I
> forgot to split the patch into two parts. My sincere apologize, this
> is my first binutils-gdb patch and the combined repository but double
> submission confused me. The patch is very straightforward so I hope
> it's not a problem but if it is I'll promptly revert it of course. The
> following gdb change was commited:

No problem.

You forgot to provide the ChangeLog entry.  FTR, here it is:

2014-12-25  Thomas Preud'homme  <thomas.preudhomme@arm.com>

        * arm-tdep.c (arm_gdbarch_init): Explicitly handle value 3 of
        Tag_ABI_VFP_args. Also replace hardcoded values by enum values in the
        switch handling the different values of Tag_ABI_VFP_args.

Also, I don't think the cast to (int) are necessary, are they?

> 
> diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
> index 43520cc..a917862 100644
> --- a/gdb/arm-tdep.c
> +++ b/gdb/arm-tdep.c
> @@ -10007,27 +10007,34 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
>  							OBJ_ATTR_PROC,
>  							Tag_ABI_VFP_args))
>  			{
> -			case 0:
> +			case (int) AEABI_VFP_args_base:
>  			  /* "The user intended FP parameter/result
>  			     passing to conform to AAPCS, base
>  			     variant".  */
>  			  fp_model = ARM_FLOAT_SOFT_VFP;
>  			  break;
> -			case 1:
> +			case (int) AEABI_VFP_args_vfp:
>  			  /* "The user intended FP parameter/result
>  			     passing to conform to AAPCS, VFP
>  			     variant".  */
>  			  fp_model = ARM_FLOAT_VFP;
>  			  break;
> -			case 2:
> +			case (int) AEABI_VFP_args_toolchain:
>  			  /* "The user intended FP parameter/result
>  			     passing to conform to tool chain-specific
>  			     conventions" - we don't know any such
>  			     conventions, so leave it as "auto".  */
>  			  break;
> +			case (int) AEABI_VFP_args_compatible:
> +			  /* "Code is compatible with both the base
> +			     and VFP variants; the user did not permit
> +			     non-variadic functions to pass FP
> +			     parameters/results" - leave it as
> +			     "auto".  */
> +			  break;
>  			default:
>  			  /* Attribute value not mentioned in the
> -			     October 2008 ABI, so leave it as
> +			     November 2012 ABI, so leave it as
>  			     "auto".  */
>  			  break;
>  			}
> 
> The definition was added in include/elf/arm.h in the same commit as follows:
> 
> diff --git a/include/elf/arm.h b/include/elf/arm.h
> index 34afdfd..e85536b 100644
> --- a/include/elf/arm.h
> +++ b/include/elf/arm.h
> @@ -319,6 +319,23 @@ enum
>    Tag_VFP_HP_extension = Tag_FP_HP_extension
>  };
>  
> +/* Values for Tag_ABI_FP_number_model.  */
> +enum
> +{
> +  AEABI_FP_number_model_none = 0,
> +  AEABI_FP_number_model_ieee754_number = 1,
> +  AEABI_FP_number_model_rtabi = 2,
> +  AEABI_FP_number_model_ieee754_all = 3
> +};
> +
> +/* Values for Tag_ABI_VFP_args.  */
> +enum
> +{
> +  AEABI_VFP_args_base = 0,
> +  AEABI_VFP_args_vfp = 1,
> +  AEABI_VFP_args_toolchain = 2,
> +  AEABI_VFP_args_compatible = 3
> +};
>  #endif
>  
>  /* The name of the note section used to identify arm variants.  */
> 
> Please let me know if I should revert the patch and sorry again for the trouble.
> 
> Best regards,
> 
> Thomas
> 
> 

-- 
Joel



More information about the Gdb-patches mailing list