diff options
Diffstat (limited to 'bfd/peicode.h')
-rw-r--r-- | bfd/peicode.h | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/bfd/peicode.h b/bfd/peicode.h index a6140d7..a64ac1d 100644 --- a/bfd/peicode.h +++ b/bfd/peicode.h @@ -1342,6 +1342,10 @@ pe_bfd_object_p (bfd * abfd) else arch = pe_arch (bfd_target_pei_arch (abfd->xvec)); + /* Don't check PE vs. EFI if arch is unknown. */ + if (arch == arch_type_unknown) + return target; + for (target_ptr = bfd_target_vector; *target_ptr != NULL; target_ptr++) { @@ -1355,13 +1359,13 @@ pe_bfd_object_p (bfd * abfd) if (pe_arch (bfd_target_efi_arch (*target_ptr)) != arch) continue; - if (efi) - { - /* TARGET_PTR is an EFI backend. Don't match - TARGET with a EFI file. */ - bfd_set_error (bfd_error_wrong_format); - return NULL; - } + if (efi) + { + /* TARGET_PTR is an EFI backend. Don't match + TARGET with a EFI file. */ + bfd_set_error (bfd_error_wrong_format); + return NULL; + } } else if (bfd_target_pei_p (*target_ptr)) { @@ -1369,13 +1373,13 @@ pe_bfd_object_p (bfd * abfd) if (pe_arch (bfd_target_pei_arch (*target_ptr)) != arch) continue; - if (!efi) - { - /* TARGET_PTR is a PE backend. Don't match - TARGET with a PE file. */ - bfd_set_error (bfd_error_wrong_format); - return NULL; - } + if (!efi) + { + /* TARGET_PTR is a PE backend. Don't match + TARGET with a PE file. */ + bfd_set_error (bfd_error_wrong_format); + return NULL; + } } } } |