* section.c (bfd_section_init): Remove unnecessary initialisations.

(bfd_section_list_clear): New function.
	(bfd_section_list_remove, bfd_section_list_insert): New macros.
	(_bfd_strip_section_from_output): Use them.
	* coffcode.h (coff_set_alignment_hook): Likewise.
	* elf32-mips.c (_bfd_mips_elf_final_link): Likewise.
	* elf64-mips.c (mips_elf64_final_link): Likewise.
	* elf64-mmix.c (mmix_elf_final_link): Likewise.
	* sunos.c (sunos_add_dynamic_symbols): Likewise.
	* xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise.
	* bfd-in2.h: Regenerate.

	* netbsd-core.c (netbsd_core_file_p): Use bfd_make_section_anyway
	rather than doing our own section handling.  Clean up after errors
	with bfd_release and bfd_section_list_clear.  Handle unexpected
	flags.
	* aoutf1.h (sunos4_core_file_p): Likewise.
	* aix386-core.c (aix386_core_file_p): Likewise.
	* cisco-core.c (cisco_core_file_validate): Likewise.
	* ptrace-core.c (ptrace_unix_core_file_p): Likewise.
	* trad-core.c (trad_unix_core_file_p): Likewise.

	* hppabsd-core.c (hppabsd_core_core_file_p):  Clean up after errors
	with bfd_release and bfd_section_list_clear.
	* hpux-core.c (hpux_core_core_file_p): Likewise.
	* irix-core.c (irix_core_core_file_p): Likewise.
	* lynx-core.c (lynx_core_file_p): Likewise.
	* osf-core.c (osf_core_core_file_p): Likewise.
	* rs6000-core.c (rs6000coff_core_p): Likewise.
	* sco5-core.c (sco5_core_file_p): Likewise.
This commit is contained in:
Alan Modra
2002-01-05 13:11:33 +00:00
parent 3f0a7f7f73
commit 9e7b37b31f
22 changed files with 402 additions and 340 deletions

View File

@@ -1,5 +1,5 @@
/* BFD back end for Lynx core files
Copyright 1993, 1994, 1995, 2001 Free Software Foundation, Inc.
Copyright 1993, 1994, 1995, 2001, 2002 Free Software Foundation, Inc.
Written by Stu Grossman of Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@@ -129,19 +129,19 @@ lynx_core_file_p (abfd)
threadp = (core_st_t *) bfd_alloc (abfd, tcontext_size);
if (!threadp)
return NULL;
goto fail;
/* Save thread contexts */
if (bfd_seek (abfd, (file_ptr) pagesize, SEEK_SET) != 0)
return NULL;
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);
return NULL;
goto fail;
}
core_signal (abfd) = threadp->currsig;
@@ -152,7 +152,7 @@ lynx_core_file_p (abfd)
pss.slimit,
pagesize + tcontext_size);
if (!newsect)
return NULL;
goto fail;
newsect = make_bfd_asection (abfd, ".data",
SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
@@ -170,7 +170,7 @@ lynx_core_file_p (abfd)
#endif
);
if (!newsect)
return NULL;
goto fail;
/* And, now for the .reg/XXX pseudo sections. Each thread has it's own
.reg/XXX section, where XXX is the thread id (without leading zeros). The
@@ -185,7 +185,7 @@ lynx_core_file_p (abfd)
0,
pagesize);
if (!newsect)
return NULL;
goto fail;
for (secnum = 0; secnum < pss.threadcnt; secnum++)
{
@@ -198,10 +198,16 @@ lynx_core_file_p (abfd)
0,
pagesize + secnum * sizeof (core_st_t));
if (!newsect)
return NULL;
goto fail;
}
return abfd->xvec;
fail:
bfd_release (abfd, core_hdr (abfd));
core_hdr (abfd) = NULL;
bfd_section_list_clear (abfd);
return NULL;
}
char *