/* BFD back end for Lynx core files
- Copyright 1993, 1994, 1995, 2001, 2002, 2004, 2005, 2006, 2007
- 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.
#define core_command(bfd) (core_hdr(bfd)->cmd)
#define lynx_core_file_matches_executable_p generic_core_file_matches_executable_p
+#define lynx_core_file_pid _bfd_nocore_core_file_pid
/* Handle Lynx core dump file. */
static asection *
-make_bfd_asection (abfd, name, flags, size, vma, filepos)
- bfd *abfd;
- const char *name;
- flagword flags;
- bfd_size_type size;
- bfd_vma vma;
- file_ptr filepos;
+make_bfd_asection (bfd *abfd,
+ const char *name,
+ flagword flags,
+ bfd_size_type size,
+ bfd_vma vma,
+ file_ptr filepos)
{
asection *asect;
char *newname;
return asect;
}
-const bfd_target *
-lynx_core_file_p (abfd)
- bfd *abfd;
+bfd_cleanup
+lynx_core_file_p (bfd *abfd)
{
int secnum;
struct pssentry pss;
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));
}
char *
-lynx_core_file_failing_command (abfd)
- bfd *abfd;
+lynx_core_file_failing_command (bfd *abfd)
{
return core_command (abfd);
}
int
-lynx_core_file_failing_signal (abfd)
- bfd *abfd;
+lynx_core_file_failing_signal (bfd *abfd)
{
return core_signal (abfd);
}