(elf_core_file_p): Move the call to elf_backend_object_p to allow the correct

machine to be set before processing the program headers.
This commit is contained in:
Nick Clifton 2005-02-14 16:17:04 +00:00
parent d60988980f
commit 5cba516c96
2 changed files with 18 additions and 11 deletions

View File

@ -1,3 +1,9 @@
2005-02-14 Orjan Friberg <orjanf@axis.com>
* elfcore.h (elf_core_file_p): Move the call to
elf_backend_object_p to allow the correct machine to be set before
processing the program headers.
2005-02-14 Nick Clifton <nickc@redhat.com>
PR binutils/716

View File

@ -207,12 +207,19 @@ elf_core_file_p (bfd *abfd)
/* Set the machine architecture. Do this before processing the
program headers since we need to know the architecture type
when processing the notes of some systems' core files. */
if (! bfd_default_set_arch_mach (abfd, ebd->arch, 0))
{
if (! bfd_default_set_arch_mach (abfd, ebd->arch, 0)
/* It's OK if this fails for the generic target. */
if (ebd->elf_machine_code != EM_NONE)
goto fail;
}
&& ebd->elf_machine_code != EM_NONE)
goto fail;
/* Let the backend double check the format and override global
information. We do this before processing the program headers
to allow the correct machine (as opposed to just the default
machine) to be set, making it possible for grok_prstatus and
grok_psinfo to rely on the mach setting. */
if (ebd->elf_backend_object_p != NULL
&& ! ebd->elf_backend_object_p (abfd))
goto wrong;
/* Process each program header. */
for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex)
@ -222,12 +229,6 @@ elf_core_file_p (bfd *abfd)
/* Save the entry point from the ELF header. */
bfd_get_start_address (abfd) = i_ehdrp->e_entry;
/* Let the backend double check the format and override global
information. */
if (ebd->elf_backend_object_p
&& (! (*ebd->elf_backend_object_p) (abfd)))
goto wrong;
bfd_preserve_finish (abfd, &preserve);
return abfd->xvec;