2007-11-12 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/5299 * peicode.h (pe_bfd_object_p): Save and restore previous bfd state when calling coff_object_p.
This commit is contained in:
parent
c261a0be88
commit
fa4dfc15df
|
@ -1,7 +1,13 @@
|
||||||
|
2007-11-12 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR binutils/5299
|
||||||
|
* peicode.h (pe_bfd_object_p): Save and restore previous bfd
|
||||||
|
state when calling coff_object_p.
|
||||||
|
|
||||||
2007-11-12 Alan Modra <amodra@bigpond.net.au>
|
2007-11-12 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* elf.c (_bfd_elf_get_synthetic_symtab): Only bump the symbol
|
* elf.c (_bfd_elf_get_synthetic_symtab): Only bump the symbol
|
||||||
pointer when we have a valid symbol. Init udata.p to NULL.
|
pointer when we have a valid symbol. Init udata.p to NULL.
|
||||||
|
|
||||||
2007-11-09 Nathan Sidwell <nathan@codesourcery.com>
|
2007-11-09 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
|
|
|
@ -1263,6 +1263,7 @@ pe_bfd_object_p (bfd * abfd)
|
||||||
struct external_PEI_IMAGE_hdr image_hdr;
|
struct external_PEI_IMAGE_hdr image_hdr;
|
||||||
file_ptr offset;
|
file_ptr offset;
|
||||||
const bfd_target *target;
|
const bfd_target *target;
|
||||||
|
struct bfd_preserve preserve;
|
||||||
|
|
||||||
/* Detect if this a Microsoft Import Library Format element. */
|
/* Detect if this a Microsoft Import Library Format element. */
|
||||||
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
|
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
|
||||||
|
@ -1327,6 +1328,10 @@ pe_bfd_object_p (bfd * abfd)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
preserve.marker = NULL;
|
||||||
|
if (! bfd_preserve_save (abfd, &preserve))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
target = coff_object_p (abfd);
|
target = coff_object_p (abfd);
|
||||||
if (target)
|
if (target)
|
||||||
{
|
{
|
||||||
|
@ -1344,7 +1349,10 @@ pe_bfd_object_p (bfd * abfd)
|
||||||
|
|
||||||
/* Don't check PE vs. EFI if arch is unknown. */
|
/* Don't check PE vs. EFI if arch is unknown. */
|
||||||
if (arch == arch_type_unknown)
|
if (arch == arch_type_unknown)
|
||||||
return target;
|
{
|
||||||
|
bfd_preserve_finish (abfd, &preserve);
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
|
||||||
for (target_ptr = bfd_target_vector; *target_ptr != NULL;
|
for (target_ptr = bfd_target_vector; *target_ptr != NULL;
|
||||||
target_ptr++)
|
target_ptr++)
|
||||||
|
@ -1361,8 +1369,10 @@ pe_bfd_object_p (bfd * abfd)
|
||||||
|
|
||||||
if (efi)
|
if (efi)
|
||||||
{
|
{
|
||||||
|
no_match:
|
||||||
/* TARGET_PTR is an EFI backend. Don't match
|
/* TARGET_PTR is an EFI backend. Don't match
|
||||||
TARGET with a EFI file. */
|
TARGET with a EFI file. */
|
||||||
|
bfd_preserve_restore (abfd, &preserve);
|
||||||
bfd_set_error (bfd_error_wrong_format);
|
bfd_set_error (bfd_error_wrong_format);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1377,12 +1387,15 @@ pe_bfd_object_p (bfd * abfd)
|
||||||
{
|
{
|
||||||
/* TARGET_PTR is a PE backend. Don't match
|
/* TARGET_PTR is a PE backend. Don't match
|
||||||
TARGET with a PE file. */
|
TARGET with a PE file. */
|
||||||
bfd_set_error (bfd_error_wrong_format);
|
goto no_match;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bfd_preserve_finish (abfd, &preserve);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
bfd_preserve_restore (abfd, &preserve);
|
||||||
|
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue