This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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, ARM] Add support for value 3 of Tag_ABI_VFP_args attribute


Oh my. Sincere apologize. I remember doing a version with the two headers and then removing the changes in one with the source still compiling and the testsuite passing. I probably had some stale version of the file somewhere.

Thanks a lot for fixing the failure.

Best regards and merry Christmas,

Thomas


> -----Original Message-----
> From: Alan Modra [mailto:amodra@gmail.com]
> Sent: Thursday, December 25, 2014 11:52 AM
> To: nickc@redhat.com
> Cc: Thomas Preud'homme; binutils@sourceware.org
> Subject: Re: [PATCH, ARM] Add support for value 3 of Tag_ABI_VFP_args
> attribute
> 
> On Tue, Dec 23, 2014 at 01:32:16PM +0000, Nicholas Clifton wrote:
> > >*** gold/ChangeLog ***
> > >
> > >2014-11-06  Thomas Preud'homme
> <thomas.preudhomme@arm.com>
> > >
> > >	* arm.cc (Target_arm::do_adjust_elf_header): Set e_flags in ELF
> header
> > >	as hard float only when Tag_ABI_VFP_args is 1, using new enum
> value
> > >	AEABI_VFP_args_vfp to check that.
> > >	(Target_arm::merge_object_attributes): Handle new
> Tag_ABI_VFP_args
> > >	value and replace hardcoded values by enum values.
> 
> This part doesn't even compile.  :-(
> 
> Committing the following to fix it.
> 
> elfcpp/
> 	* arm.h: Add enums for Tag_ABI_FP_number_model and
> Tag_ABI_VFP_args.
> gold/
> 	* arm.cc (Target_arm::do_adjust_elf_header): Provide
> namespace on
> 	new enums.
> 	(Target_arm::merge_object_attributes, ): Likewise.
> 
> diff --git a/elfcpp/arm.h b/elfcpp/arm.h
> index 8c6b6bf..8a86595 100644
> --- a/elfcpp/arm.h
> +++ b/elfcpp/arm.h
> @@ -340,6 +340,24 @@ enum
>    AEABI_enum_forced_wide = 3
>  };
> 
> +// 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
> +};
> +
>  // For Exception Index Table. (Exception handling ABI for the ARM
>  // architectue, Section 5)
>  enum
> diff --git a/gold/arm.cc b/gold/arm.cc
> index 4186a2a..8485ab3 100644
> --- a/gold/arm.cc
> +++ b/gold/arm.cc
> @@ -10056,7 +10056,7 @@
> Target_arm<big_endian>::do_adjust_elf_header(
>      if (type == elfcpp::ET_EXEC || type == elfcpp::ET_DYN)
>        {
>  	Object_attribute* attr = this-
> >get_aeabi_object_attribute(elfcpp::Tag_ABI_VFP_args);
> -	if (attr->int_value() == AEABI_VFP_args_vfp)
> +	if (attr->int_value() == elfcpp::AEABI_VFP_args_vfp)
>  	  flags |= elfcpp::EF_ARM_ABI_FLOAT_HARD;
>  	else
>  	  flags |= elfcpp::EF_ARM_ABI_FLOAT_SOFT;
> @@ -10494,17 +10494,17 @@
> Target_arm<big_endian>::merge_object_attributes(
>      {
>        // Ignore mismatches if the object doesn't use floating point.  */
>        if (out_attr[elfcpp::Tag_ABI_FP_number_model].int_value()
> -	  == AEABI_FP_number_model_none
> +	  == elfcpp::AEABI_FP_number_model_none
>  	  || (in_attr[elfcpp::Tag_ABI_FP_number_model].int_value()
> -	      != AEABI_FP_number_model_none
> +	      != elfcpp::AEABI_FP_number_model_none
>  	      && out_attr[elfcpp::Tag_ABI_VFP_args].int_value()
> -		 == AEABI_VFP_args_compatible))
> +		 == elfcpp::AEABI_VFP_args_compatible))
>  	out_attr[elfcpp::Tag_ABI_VFP_args].set_int_value(
>  	    in_attr[elfcpp::Tag_ABI_VFP_args].int_value());
>        else if (in_attr[elfcpp::Tag_ABI_FP_number_model].int_value()
> -	       != AEABI_FP_number_model_none
> +	       != elfcpp::AEABI_FP_number_model_none
>  	       && in_attr[elfcpp::Tag_ABI_VFP_args].int_value()
> -		  != AEABI_VFP_args_compatible
> +		  != elfcpp::AEABI_VFP_args_compatible
>  	       && parameters->options().warn_mismatch())
>  	gold_error(_("%s uses VFP register arguments, output does
> not"),
>  		   name);
> 
> --
> Alan Modra
> Australia Development Lab, IBM





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