diff options
Diffstat (limited to 'bfd/elfnn-aarch64.c')
-rw-r--r-- | bfd/elfnn-aarch64.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 3435a3d..1e27501 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -6530,11 +6530,26 @@ elfNN_aarch64_merge_private_bfd_data (bfd *ibfd, bfd *obfd) /* Check if we have the same endianess. */ if (!_bfd_generic_verify_endian_match (ibfd, obfd)) - return FALSE; + { + (*_bfd_error_handler) + (_("%B: endianness incompatible with that of the selected emulation"), + ibfd); + return FALSE; + } if (!is_aarch64_elf (ibfd) || !is_aarch64_elf (obfd)) return TRUE; + /* Don't allow mixing ilp32 with lp64. */ + if ((bfd_get_arch_info (ibfd)->mach & bfd_mach_aarch64_ilp32) + != (bfd_get_arch_info (obfd)->mach & bfd_mach_aarch64_ilp32)) + { + (*_bfd_error_handler) + (_("%B: ABI is incompatible with that of the selected emulation: \"%s\" != \"%s\""), + ibfd, bfd_get_target (ibfd), bfd_get_target (obfd)); + return FALSE; + } + /* The input BFD must have had its flags initialised. */ /* The following seems bogus to me -- The flags are initialized in the assembler but I don't think an elf_flags_init field is |