summaryrefslogtreecommitdiffstats
path: root/contrib/binutils
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2015-04-03 19:33:26 +0000
committerandrew <andrew@FreeBSD.org>2015-04-03 19:33:26 +0000
commite95804b81f9fa2cf9869afe23a2ad6efb7a750f8 (patch)
treed4cfd33b380139f82632a93dc8561b27726974b4 /contrib/binutils
parent0315882c1b8cbec68197617a2de850895440ea52 (diff)
downloadFreeBSD-src-e95804b81f9fa2cf9869afe23a2ad6efb7a750f8.zip
FreeBSD-src-e95804b81f9fa2cf9869afe23a2ad6efb7a750f8.tar.gz
More ARM EABI object attributes in binutils. This adds support to binutils
to include the Unaligned Access and Floating-point Half-precision attributes. the former marks ELF objects that may access ARMv6 style unaligned data, the latter that the binary uses the VFPv3/Advanced SIMD half-precision extension. These may be emmitted by clang so it's best to print a warning when the linker hits one of them. Differential Revision: http://reviews.freebsd.org/D2194 Submitted by: Michal Meloun <meloun@miracle.cz> MFC after: 1 week
Diffstat (limited to 'contrib/binutils')
-rw-r--r--contrib/binutils/bfd/elf-bfd.h2
-rw-r--r--contrib/binutils/bfd/elf32-arm.c6
-rw-r--r--contrib/binutils/include/elf/arm.h6
3 files changed, 11 insertions, 3 deletions
diff --git a/contrib/binutils/bfd/elf-bfd.h b/contrib/binutils/bfd/elf-bfd.h
index c80bc76..8c30dd5 100644
--- a/contrib/binutils/bfd/elf-bfd.h
+++ b/contrib/binutils/bfd/elf-bfd.h
@@ -1286,7 +1286,7 @@ struct elf_find_verdep_info
};
/* The maximum number of known object attributes for any target. */
-#define NUM_KNOWN_OBJ_ATTRIBUTES 32
+#define NUM_KNOWN_OBJ_ATTRIBUTES 71
/* The value of an object attribute. type & 1 indicates whether there
is an integer value; type & 2 indicates whether there is a string
diff --git a/contrib/binutils/bfd/elf32-arm.c b/contrib/binutils/bfd/elf32-arm.c
index 47b6566..4d7b486 100644
--- a/contrib/binutils/bfd/elf32-arm.c
+++ b/contrib/binutils/bfd/elf32-arm.c
@@ -6835,6 +6835,8 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
case Tag_ABI_FP_number_model:
case Tag_ABI_align8_preserved:
case Tag_ABI_HardFP_use:
+ case Tag_CPU_unaligned_access:
+ case Tag_FP_HP_extension:
/* Use the largest value specified. */
if (in_attr[i].i > out_attr[i].i)
out_attr[i].i = in_attr[i].i;
@@ -6951,7 +6953,9 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
}
break;
default: /* All known attributes should be explicitly covered. */
- abort ();
+ /* XXX Not now */
+ /* abort (); */
+ break;
}
}
diff --git a/contrib/binutils/include/elf/arm.h b/contrib/binutils/include/elf/arm.h
index b10bb72..f963817 100644
--- a/contrib/binutils/include/elf/arm.h
+++ b/contrib/binutils/include/elf/arm.h
@@ -271,7 +271,11 @@ enum
Tag_ABI_optimization_goals,
Tag_ABI_FP_optimization_goals,
/* 32 is generic. */
-
+ Tag_CPU_unaligned_access = 34,
+ Tag_FP_HP_extension = 36,
+ Tag_ABI_FP_16bit_format = 38,
+ Tag_MPextension_use = 42,
+ Tag_DIV_use = 44,
Tag_Virtualization_use = 68,
};
OpenPOWER on IntegriCloud