2016-09-01 Thomas Preud'homme <thomas.preudhomme@arm.com>
authorThomas Preud'homme <thomas.preudhomme@arm.com>
Thu, 1 Sep 2016 08:35:57 +0000 (09:35 +0100)
committerThomas Preud'homme <thomas.preudhomme@arm.com>
Thu, 1 Sep 2016 08:36:29 +0000 (09:36 +0100)
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
bfd/elf32-arm.c

index ddbf23b..71ec02f 100644 (file)
@@ -1,3 +1,9 @@
+2016-09-01  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       * 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  <amodra@gmail.com>
 
        * elf64-ppc.c (synthetic_opd): New static var.
index 9ff418a..5275cae 100644 (file)
@@ -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;
 }