ARM: Add support for value 3 of Tag_ABI_VFP_args attribute
Missing from 5c294fee 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.
This commit is contained in:
parent
6fd9d738c0
commit
f12d1e8a66
@ -1,3 +1,7 @@
|
|||||||
|
2014-12-25 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* arm.h: Add enums for Tag_ABI_FP_number_model and Tag_ABI_VFP_args.
|
||||||
|
|
||||||
2014-09-17 Han Shen <shenhan@google.com>
|
2014-09-17 Han Shen <shenhan@google.com>
|
||||||
|
|
||||||
* aarch64.h (R_AARCH64_TLS_DTPREL64): Switch enum value with ...
|
* aarch64.h (R_AARCH64_TLS_DTPREL64): Switch enum value with ...
|
||||||
|
18
elfcpp/arm.h
18
elfcpp/arm.h
@ -340,6 +340,24 @@ enum
|
|||||||
AEABI_enum_forced_wide = 3
|
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
|
// For Exception Index Table. (Exception handling ABI for the ARM
|
||||||
// architectue, Section 5)
|
// architectue, Section 5)
|
||||||
enum
|
enum
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2014-12-25 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* arm.cc (Target_arm::do_adjust_elf_header): Provide namespace on
|
||||||
|
new enums.
|
||||||
|
(Target_arm::merge_object_attributes, ): Likewise.
|
||||||
|
|
||||||
2014-12-25 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
2014-12-25 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||||
|
|
||||||
* arm.cc (Target_arm::do_adjust_elf_header): Set e_flags in ELF header
|
* arm.cc (Target_arm::do_adjust_elf_header): Set e_flags in ELF header
|
||||||
|
12
gold/arm.cc
12
gold/arm.cc
@ -10056,7 +10056,7 @@ Target_arm<big_endian>::do_adjust_elf_header(
|
|||||||
if (type == elfcpp::ET_EXEC || type == elfcpp::ET_DYN)
|
if (type == elfcpp::ET_EXEC || type == elfcpp::ET_DYN)
|
||||||
{
|
{
|
||||||
Object_attribute* attr = this->get_aeabi_object_attribute(elfcpp::Tag_ABI_VFP_args);
|
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;
|
flags |= elfcpp::EF_ARM_ABI_FLOAT_HARD;
|
||||||
else
|
else
|
||||||
flags |= elfcpp::EF_ARM_ABI_FLOAT_SOFT;
|
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. */
|
// Ignore mismatches if the object doesn't use floating point. */
|
||||||
if (out_attr[elfcpp::Tag_ABI_FP_number_model].int_value()
|
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()
|
|| (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()
|
&& 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(
|
out_attr[elfcpp::Tag_ABI_VFP_args].set_int_value(
|
||||||
in_attr[elfcpp::Tag_ABI_VFP_args].int_value());
|
in_attr[elfcpp::Tag_ABI_VFP_args].int_value());
|
||||||
else if (in_attr[elfcpp::Tag_ABI_FP_number_model].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()
|
&& in_attr[elfcpp::Tag_ABI_VFP_args].int_value()
|
||||||
!= AEABI_VFP_args_compatible
|
!= elfcpp::AEABI_VFP_args_compatible
|
||||||
&& parameters->options().warn_mismatch())
|
&& parameters->options().warn_mismatch())
|
||||||
gold_error(_("%s uses VFP register arguments, output does not"),
|
gold_error(_("%s uses VFP register arguments, output does not"),
|
||||||
name);
|
name);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user