X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Flynx-core.c;h=08d088386114195c4b41cedd340ddb46e50abfcf;hb=56a4f5a10b1e90d60527455b8542ba98fd0f6349;hp=ef47c8359c732de06799612924703bc0572f26b9;hpb=986f078366b193ed9f5bd02af965f3af958ba859;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/lynx-core.c b/bfd/lynx-core.c index ef47c8359c..08d0883861 100644 --- a/bfd/lynx-core.c +++ b/bfd/lynx-core.c @@ -85,7 +85,7 @@ make_bfd_asection (bfd *abfd, return asect; } -const bfd_target * +bfd_cleanup lynx_core_file_p (bfd *abfd) { int secnum; @@ -126,24 +126,13 @@ lynx_core_file_p (bfd *abfd) tcontext_size = pss.threadcnt * sizeof (core_st_t); - /* Allocate space for the thread contexts */ - - threadp = (core_st_t *) bfd_alloc (abfd, tcontext_size); - if (!threadp) - goto fail; - /* Save thread contexts */ - - if (bfd_seek (abfd, (file_ptr) pagesize, SEEK_SET) != 0) + if (bfd_seek (abfd, pagesize, SEEK_SET) != 0) + goto fail; + threadp = (core_st_t *) _bfd_alloc_and_read (abfd, tcontext_size, + tcontext_size); + if (!threadp) goto fail; - - if (bfd_bread ((void *) threadp, tcontext_size, abfd) != tcontext_size) - { - /* Probably too small to be a core file */ - if (bfd_get_error () != bfd_error_system_call) - bfd_set_error (bfd_error_wrong_format); - goto fail; - } core_signal (abfd) = threadp->currsig; @@ -202,7 +191,7 @@ lynx_core_file_p (bfd *abfd) goto fail; } - return abfd->xvec; + return _bfd_no_cleanup; fail: bfd_release (abfd, core_hdr (abfd));