/* BFD back end for Lynx core files
- Copyright (C) 1993-2016 Free Software Foundation, Inc.
+ Copyright (C) 1993-2020 Free Software Foundation, Inc.
Written by Stu Grossman of Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
return asect;
}
-const bfd_target *
+bfd_cleanup
lynx_core_file_p (bfd *abfd)
{
int secnum;
core_st_t *threadp;
int pagesize;
asection *newsect;
- bfd_size_type amt;
+ size_t amt;
pagesize = getpagesize (); /* Serious cross-target issue here... This
really needs to come from a system-specific
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;
pagesize + tcontext_size + pss.ssize
#if defined (SPARC) || defined (__SPARC__)
/* SPARC Lynx seems to start dumping
- the .data section at a page
- boundary. It's OK to check a
- #define like SPARC here because this
- file can only be compiled on a Lynx
- host. */
+ the .data section at a page
+ boundary. It's OK to check a
+ #define like SPARC here because this
+ file can only be compiled on a Lynx
+ host. */
+ pss.data_start % pagesize
#endif
);
goto fail;
}
- return abfd->xvec;
+ return _bfd_no_cleanup;
fail:
bfd_release (abfd, core_hdr (abfd));