* elf32-rx.c (rx_elf_object_p): Add more checks for "scanning" to
authorDJ Delorie <dj@redhat.com>
Tue, 22 Nov 2011 19:50:36 +0000 (19:50 +0000)
committerDJ Delorie <dj@redhat.com>
Tue, 22 Nov 2011 19:50:36 +0000 (19:50 +0000)
avoid using the special non-swapping target when not explicitly
requested.

bfd/ChangeLog
bfd/elf32-rx.c

index df293781d1526bdb371e0467b05e1e1dc987b322..e27dfc6c590482cada996a48aceb2ba53247d031 100644 (file)
@@ -1,3 +1,9 @@
+2011-11-22  DJ Delorie  <dj@redhat.com>
+
+       * elf32-rx.c (rx_elf_object_p): Add more checks for "scanning" to
+       avoid using the special non-swapping target when not explicitly
+       requested.
+
 2011-11-22  Daniel Calcoen  <Daniel.Calcoen@cern.ch>
 
        * elf32-rx.c (rx_elf_object_p): Correct typo: lma->vma.
index c21c7b1a39dab81cc42104d12fb4f6711d0bd5f5..0ceed858a4e0e9928f17bc23a07f02d0712ac49a 100644 (file)
@@ -32,6 +32,7 @@
    endian-swap we would otherwise get.  We check for this in
    rx_elf_object_p().  */
 const bfd_target bfd_elf32_rx_be_ns_vec;
+const bfd_target bfd_elf32_rx_be_vec;
 
 #ifdef DEBUG
 char * rx_get_reloc (long);
@@ -3028,6 +3029,7 @@ rx_elf_object_p (bfd * abfd)
   Elf_Internal_Phdr *phdr = elf_tdata (abfd)->phdr;
   int nphdrs = elf_elfheader (abfd)->e_phnum;
   sec_ptr bsec;
+  static int saw_be = FALSE;
 
   /* We never want to automatically choose the non-swapping big-endian
      target.  The user can only get that explicitly, such as with -I
@@ -3036,6 +3038,15 @@ rx_elf_object_p (bfd * abfd)
       && abfd->target_defaulted)
     return FALSE;
 
+  /* BFD->target_defaulted is not set to TRUE when a target is chosen
+     as a fallback, so we check for "scanning" to know when to stop
+     using the non-swapping target.  */
+  if (abfd->xvec == &bfd_elf32_rx_be_ns_vec
+      && saw_be)
+    return FALSE;
+  if (abfd->xvec == &bfd_elf32_rx_be_vec)
+    saw_be = TRUE;
+
   bfd_default_set_arch_mach (abfd, bfd_arch_rx,
                             elf32_rx_machine (abfd));
 
This page took 0.033036 seconds and 4 git commands to generate.