diff options
author | andrew <andrew@FreeBSD.org> | 2015-04-03 19:33:26 +0000 |
---|---|---|
committer | andrew <andrew@FreeBSD.org> | 2015-04-03 19:33:26 +0000 |
commit | e95804b81f9fa2cf9869afe23a2ad6efb7a750f8 (patch) | |
tree | d4cfd33b380139f82632a93dc8561b27726974b4 /contrib/binutils | |
parent | 0315882c1b8cbec68197617a2de850895440ea52 (diff) | |
download | FreeBSD-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.h | 2 | ||||
-rw-r--r-- | contrib/binutils/bfd/elf32-arm.c | 6 | ||||
-rw-r--r-- | contrib/binutils/include/elf/arm.h | 6 |
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, }; |