summaryrefslogtreecommitdiff
path: root/bfd/elfcore.h
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2013-01-26 02:07:58 +0000
committerAlan Modra <amodra@bigpond.net.au>2013-01-26 02:07:58 +0000
commit2f8f5697e4df9a119ea0c71aa920756e72fd1775 (patch)
tree57903d4313b74fb72a7e9517d2db57f77d8ed7b3 /bfd/elfcore.h
parent3efc239754ec850208ad8200747f6c5694ea2c82 (diff)
downloadgdb-2f8f5697e4df9a119ea0c71aa920756e72fd1775.tar.gz
* bfd.c (struct bfd_preserve, bfd_preserve_save, bfd_preserve_restore,
bfd_preserve_finish): Move to.. * format.c: ..here, splitting out.. (bfd_reinit): ..this. New function. (bfd_check_format_matches): Use bfd_preserve_save/restore to keep bfd state for a match. * elfcode.h (elf_object_p): Don't use bfd_preserve_save/restore. * elfcore.h (elf_core_file_p): Likewise. * mach-o.c (bfd_mach_o_header_p): Likewise. * pef.c (bfd_pef_object_p, bfd_pef_xlib_object_p): Likewise. * xsym.c (bfd_sym_object_p): Likewise. * mmo.c (mmo_scan): Clear abfd->symcount. * opncls.c (_bfd_new_bfd): Use a smaller section hash table. * section.c (bfd_section_list_clear): Clear section_htab.count. * bfd-in2.h: Regenerate.
Diffstat (limited to 'bfd/elfcore.h')
-rw-r--r--bfd/elfcore.h21
1 files changed, 0 insertions, 21 deletions
diff --git a/bfd/elfcore.h b/bfd/elfcore.h
index 3d7d59fa91e..8d5ec6d5a24 100644
--- a/bfd/elfcore.h
+++ b/bfd/elfcore.h
@@ -84,11 +84,8 @@ elf_core_file_p (bfd *abfd)
Elf_Internal_Phdr *i_phdrp; /* Elf program header, internal form. */
unsigned int phindex;
const struct elf_backend_data *ebd;
- struct bfd_preserve preserve;
bfd_size_type amt;
- preserve.marker = NULL;
-
/* Read in the ELF header in external format. */
if (bfd_bread (&x_ehdr, sizeof (x_ehdr), abfd) != sizeof (x_ehdr))
{
@@ -123,13 +120,9 @@ elf_core_file_p (bfd *abfd)
goto wrong;
}
- if (!bfd_preserve_save (abfd, &preserve))
- goto fail;
-
/* Give abfd an elf_obj_tdata. */
if (! (*abfd->xvec->_bfd_set_format[bfd_core]) (abfd))
goto fail;
- preserve.marker = elf_tdata (abfd);
/* Swap in the rest of the header, now that we have the byte order. */
i_ehdrp = elf_elfheader (abfd);
@@ -318,24 +311,10 @@ elf_core_file_p (bfd *abfd)
/* Save the entry point from the ELF header. */
bfd_get_start_address (abfd) = i_ehdrp->e_entry;
-
- bfd_preserve_finish (abfd, &preserve);
return abfd->xvec;
wrong:
- /* There is way too much undoing of half-known state here. The caller,
- bfd_check_format_matches, really shouldn't iterate on live bfd's to
- check match/no-match like it does. We have to rely on that a call to
- bfd_default_set_arch_mach with the previously known mach, undoes what
- was done by the first bfd_default_set_arch_mach (with mach 0) here.
- For this to work, only elf-data and the mach may be changed by the
- target-specific elf_backend_object_p function. Note that saving the
- whole bfd here and restoring it would be even worse; the first thing
- you notice is that the cached bfd file position gets out of sync. */
bfd_set_error (bfd_error_wrong_format);
-
fail:
- if (preserve.marker != NULL)
- bfd_preserve_restore (abfd, &preserve);
return NULL;
}