diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0a3b2484c23daef895965e930624e5c5c709e2d9..deeea7efdb39522ed49a032630ab7c28011ca7d2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,9 @@ 2005-10-27 Alan Modra <amodra@bigpond.net.au> + * hppabsd-core.c (hppabsd_core_core_file_p): Use bfd_stat, not fstat. + * sco5-core.c (sco5_core_file_p): Likewise. + * trad-core.c (trad_unix_core_file_p): Likewise. + * cache.c: Reorganize file to avoid forward reference. 2005-10-26 Alan Modra <amodra@bigpond.net.au> diff --git a/bfd/hppabsd-core.c b/bfd/hppabsd-core.c index b17acc699fcd925374674e03baa624a03bf8ef26..894d244bbc3cd4e71783d8fc4d9b8e23086d9eaa 100644 --- a/bfd/hppabsd-core.c +++ b/bfd/hppabsd-core.c @@ -1,5 +1,5 @@ /* BFD back-end for HPPA BSD core files. - Copyright 1993, 1994, 1995, 1998, 1999, 2001, 2002, 2003, 2004 + Copyright 1993, 1994, 1995, 1998, 1999, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -137,16 +137,11 @@ hppabsd_core_core_file_p (abfd) /* Sanity checks. Make sure the size of the core file matches the the size computed from information within the core itself. */ { - FILE *stream = bfd_cache_lookup (abfd); struct stat statbuf; - if (stream == NULL) + if (bfd_stat (abfd, &statbuf) < 0) return NULL; - if (fstat (fileno (stream), &statbuf) < 0) - { - bfd_set_error (bfd_error_system_call); - return NULL; - } + if (NBPG * (UPAGES + u.u_dsize + u.u_ssize) > statbuf.st_size) { bfd_set_error (bfd_error_file_truncated); diff --git a/bfd/sco5-core.c b/bfd/sco5-core.c index e85c4d3793c7497c6750d5ab1f0b36012b0ba74d..f09eadafe8c9a4d465caff9418f86b332a5c8ea5 100644 --- a/bfd/sco5-core.c +++ b/bfd/sco5-core.c @@ -1,5 +1,5 @@ /* BFD back end for SCO5 core files (U-area and raw sections) - Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Written by Jouke Numan <jnuman@hiscom.nl> @@ -126,16 +126,11 @@ sco5_core_file_p (abfd) /* Read coreoffsets region at end of core (see core(FP)). */ { - FILE *stream = bfd_cache_lookup (abfd); struct stat statbuf; - if (stream == NULL) + if (bfd_stat (abfd, &statbuf) < 0) return NULL; - if (fstat (fileno (stream), &statbuf) < 0) - { - bfd_set_error (bfd_error_system_call); - return NULL; - } + coresize = statbuf.st_size; } /* Last long in core is sizeof struct coreoffsets, read it */ diff --git a/bfd/trad-core.c b/bfd/trad-core.c index c958683344a6d014fb4442a46517968fc51eeb8d..2f8c9f9ca5f80d8954a1df8e908331404b8492f9 100644 --- a/bfd/trad-core.c +++ b/bfd/trad-core.c @@ -1,6 +1,6 @@ /* BFD back end for traditional Unix core files (U-area and raw sections) Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, - 2000, 2001, 2002, 2003, 2004 + 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Written by John Gilmore of Cygnus Support. @@ -109,16 +109,11 @@ trad_unix_core_file_p (abfd) /* Check that the size claimed is no greater than the file size. */ { - FILE *stream = bfd_cache_lookup (abfd); struct stat statbuf; - if (stream == NULL) + if (bfd_stat (abfd, &statbuf) < 0) return 0; - if (fstat (fileno (stream), &statbuf) < 0) - { - bfd_set_error (bfd_error_system_call); - return 0; - } + if ((unsigned long) (NBPG * (UPAGES + u.u_dsize #ifdef TRAD_CORE_DSIZE_INCLUDES_TSIZE - u.u_tsize