2009-12-10 Doug Kwan <dougkwan@google.com>
elfcpp/ChangeLog * arm.h: New enums for EABI object attribute tags and values. gold/ChangeLog * arm.cc (attributes.h): New include. (Arm_relobj::Arm_relobj): Initialize attributes_section_data_. (Arm_relobj::~Arm_relobj): Delete object pointed by attributes_section_data_. (Arm_relobj::attributes_section_data): New method definition. (Arm_relobj::attributes_section_data_): New data member declaration. (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_. (Arm_dynobj::~Arm_dynobj): Delete object pointed by attributes_section_data_. (Arm_dynobj::attributes_section_data): New method definition. (Arm_dynobj::attributes_section_data_): New data member declaration. (Target_arm::Target_arm): Initialize attributes_section_data_. Change initialization value of may_use_blx_ to false. (Target_arm::using_thumb2, Target_arm::using_thumb_only, Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use object attributes to compute results instead of hard-coding. (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order, Target_arm::get_secondary_compatible_arch, Target_arm::set_secondary_compatible_arch Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name, Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes): New method declarations. (Target_arm::get_aeabi_object_attribute): New method definition. (Target_arm::attributes_section_data_): New data member declaration. (read_arm_attributes_section): New template definition. (Arm_relobj::do_read_symbols): Read attributes section if it exists. (Arm_dynobj::do_read_symbols): Ditto. (Target_arm::do_finalize_sections): Merge attributes sections from input. Check for BLX use after attributes section merging. Fix __exidx_start and __exidx_end visibility. Create an .ARM.attributes section if necessary. (Target_arm::get_secondary_compatible_arch, Target_arm::set_secondary_compatible_arch, Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name, Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes, Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order): New method definitions.
This commit is contained in:
parent
0fa6cf1b45
commit
a0351a698b
@ -1,3 +1,7 @@
|
||||
2009-12-10 Doug Kwan <dougkwan@google.com>
|
||||
|
||||
* arm.h: New enums for EABI object attribute tags and values.
|
||||
|
||||
2009-12-05 Doug Kwan <dougkwan@google.com>
|
||||
|
||||
* arm.h: Define enums for Tag_CPU_arch EABI attribute.
|
||||
|
76
elfcpp/arm.h
76
elfcpp/arm.h
@ -245,6 +245,82 @@ enum
|
||||
TAG_CPU_ARCH_V4T_PLUS_V6_M = (MAX_TAG_CPU_ARCH + 1)
|
||||
};
|
||||
|
||||
// EABI object attributes.
|
||||
enum
|
||||
{
|
||||
// 0-3 are generic.
|
||||
Tag_CPU_raw_name = 4,
|
||||
Tag_CPU_name = 5,
|
||||
Tag_CPU_arch = 6,
|
||||
Tag_CPU_arch_profile = 7,
|
||||
Tag_ARM_ISA_use = 8,
|
||||
Tag_THUMB_ISA_use = 9,
|
||||
Tag_VFP_arch = 10,
|
||||
Tag_WMMX_arch = 11,
|
||||
Tag_Advanced_SIMD_arch = 12,
|
||||
Tag_PCS_config = 13,
|
||||
Tag_ABI_PCS_R9_use = 14,
|
||||
Tag_ABI_PCS_RW_data = 15,
|
||||
Tag_ABI_PCS_RO_data = 16,
|
||||
Tag_ABI_PCS_GOT_use = 17,
|
||||
Tag_ABI_PCS_wchar_t = 18,
|
||||
Tag_ABI_FP_rounding = 19,
|
||||
Tag_ABI_FP_denormal = 20,
|
||||
Tag_ABI_FP_exceptions = 21,
|
||||
Tag_ABI_FP_user_exceptions = 22,
|
||||
Tag_ABI_FP_number_model = 23,
|
||||
Tag_ABI_align8_needed = 24,
|
||||
Tag_ABI_align8_preserved = 25,
|
||||
Tag_ABI_enum_size = 26,
|
||||
Tag_ABI_HardFP_use = 27,
|
||||
Tag_ABI_VFP_args = 28,
|
||||
Tag_ABI_WMMX_args = 29,
|
||||
Tag_ABI_optimization_goals = 30,
|
||||
Tag_ABI_FP_optimization_goals = 31,
|
||||
// 32 is generic (Tag_compatibility).
|
||||
Tag_undefined33 = 33,
|
||||
Tag_CPU_unaligned_access = 34,
|
||||
Tag_undefined35 = 35,
|
||||
Tag_VFP_HP_extension = 36,
|
||||
Tag_undefined37 = 37,
|
||||
Tag_ABI_FP_16bit_format = 38,
|
||||
Tag_undefined39 = 39,
|
||||
Tag_nodefaults = 64,
|
||||
Tag_also_compatible_with = 65,
|
||||
Tag_T2EE_use = 66,
|
||||
Tag_conformance = 67,
|
||||
Tag_Virtualization_use = 68,
|
||||
Tag_undefined69 = 69,
|
||||
Tag_MPextension_use = 70
|
||||
};
|
||||
|
||||
// Values for Tag_ABI_PCS_R9_use.
|
||||
enum
|
||||
{
|
||||
AEABI_R9_V6 = 0,
|
||||
AEABI_R9_SB = 1,
|
||||
AEABI_R9_TLS = 2,
|
||||
AEABI_R9_unused = 3
|
||||
};
|
||||
|
||||
// Values for Tag_ABI_PCS_RW_data.
|
||||
enum
|
||||
{
|
||||
AEABI_PCS_RW_data_absolute = 0,
|
||||
AEABI_PCS_RW_data_PCrel = 1,
|
||||
AEABI_PCS_RW_data_SBrel = 2,
|
||||
AEABI_PCS_RW_data_unused = 3
|
||||
};
|
||||
|
||||
// Values for Tag_ABI_enum_size.
|
||||
enum
|
||||
{
|
||||
AEABI_enum_unused = 0,
|
||||
AEABI_enum_short = 1,
|
||||
AEABI_enum_wide = 2,
|
||||
AEABI_enum_forced_wide = 3
|
||||
};
|
||||
|
||||
} // End namespace elfcpp.
|
||||
|
||||
#endif // !defined(ELFCPP_ARM_H)
|
||||
|
@ -1,3 +1,43 @@
|
||||
2009-12-10 Doug Kwan <dougkwan@google.com>
|
||||
|
||||
* arm.cc (attributes.h): New include.
|
||||
(Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
|
||||
(Arm_relobj::~Arm_relobj): Delete object pointed by
|
||||
attributes_section_data_.
|
||||
(Arm_relobj::attributes_section_data): New method definition.
|
||||
(Arm_relobj::attributes_section_data_): New data member declaration.
|
||||
(Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
|
||||
(Arm_dynobj::~Arm_dynobj): Delete object pointed by
|
||||
attributes_section_data_.
|
||||
(Arm_dynobj::attributes_section_data): New method definition.
|
||||
(Arm_dynobj::attributes_section_data_): New data member declaration.
|
||||
(Target_arm::Target_arm): Initialize attributes_section_data_. Change
|
||||
initialization value of may_use_blx_ to false.
|
||||
(Target_arm::using_thumb2, Target_arm::using_thumb_only,
|
||||
Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
|
||||
object attributes to compute results instead of hard-coding.
|
||||
(Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
|
||||
Target_arm::get_secondary_compatible_arch,
|
||||
Target_arm::set_secondary_compatible_arch
|
||||
Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
|
||||
Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
|
||||
New method declarations.
|
||||
(Target_arm::get_aeabi_object_attribute): New method definition.
|
||||
(Target_arm::attributes_section_data_): New data member declaration.
|
||||
(read_arm_attributes_section): New template definition.
|
||||
(Arm_relobj::do_read_symbols): Read attributes section if it exists.
|
||||
(Arm_dynobj::do_read_symbols): Ditto.
|
||||
(Target_arm::do_finalize_sections): Merge attributes sections from
|
||||
input. Check for BLX use after attributes section merging.
|
||||
Fix __exidx_start and __exidx_end visibility. Create an
|
||||
.ARM.attributes section if necessary.
|
||||
(Target_arm::get_secondary_compatible_arch,
|
||||
Target_arm::set_secondary_compatible_arch,
|
||||
Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
|
||||
Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
|
||||
Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
|
||||
New method definitions.
|
||||
|
||||
2009-12-09 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* plugin.cc (Plugin::load): Don't cast from void* to a function
|
||||
|
982
gold/arm.cc
982
gold/arm.cc
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user