diff options
Diffstat (limited to 'gold/arm.cc')
-rw-r--r-- | gold/arm.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/gold/arm.cc b/gold/arm.cc index c0a2049..200c371 100644 --- a/gold/arm.cc +++ b/gold/arm.cc @@ -2262,9 +2262,16 @@ class Target_arm : public Sized_target<32, big_endian> Object_attribute* attr = this->get_aeabi_object_attribute(elfcpp::Tag_CPU_arch); int arch = attr->int_value(); - return (arch != elfcpp::TAG_CPU_ARCH_PRE_V4 - && arch != elfcpp::TAG_CPU_ARCH_V4 - && arch != elfcpp::TAG_CPU_ARCH_V4T); + if (parameters->options().fix_arm1176()) + return (arch == elfcpp::TAG_CPU_ARCH_V6T2 + || arch == elfcpp::TAG_CPU_ARCH_V7 + || arch == elfcpp::TAG_CPU_ARCH_V6_M + || arch == elfcpp::TAG_CPU_ARCH_V6S_M + || arch == elfcpp::TAG_CPU_ARCH_V7E_M); + else + return (arch != elfcpp::TAG_CPU_ARCH_PRE_V4 + && arch != elfcpp::TAG_CPU_ARCH_V4 + && arch != elfcpp::TAG_CPU_ARCH_V4T); } // Process the relocations to determine unreferenced sections for |