From 424844864aa6f49c616b3bb74a0a5ba9bcb92e72 Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Thu, 1 Sep 2016 09:35:57 +0100 Subject: [PATCH] 2016-09-01 Thomas Preud'homme bfd/ * elf32-arm.c (cmse_entry_fct_p): Store instruction encoding in an array of bytes and use bfd_get_16 to interpret its encoding according to endianness of target. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-arm.c | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ddbf23b..71ec02f 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2016-09-01 Thomas Preud'homme + + * elf32-arm.c (cmse_entry_fct_p): Store instruction encoding in an + array of bytes and use bfd_get_16 to interpret its encoding according + to endianness of target. + 2016-09-01 Alan Modra * elf64-ppc.c (synthetic_opd): New static var. diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 9ff418a..5275cae 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -5775,6 +5775,7 @@ cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab, static bfd_boolean cmse_entry_fct_p (struct elf32_arm_link_hash_entry *hash) { + bfd_byte contents[4]; uint32_t first_insn; asection *section; file_ptr offset; @@ -5791,11 +5792,13 @@ cmse_entry_fct_p (struct elf32_arm_link_hash_entry *hash) section = hash->root.root.u.def.section; abfd = section->owner; offset = hash->root.root.u.def.value - section->vma; - if (!bfd_get_section_contents (abfd, section, &first_insn, offset, - sizeof (first_insn))) + if (!bfd_get_section_contents (abfd, section, contents, offset, + sizeof (contents))) return FALSE; - /* Start by SG instruction. */ + first_insn = bfd_get_32 (abfd, contents); + + /* Starts by SG instruction. */ return first_insn == 0xe97fe97f; } -- 2.7.4