aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2007-11-15 05:20:30 +0000
committerAlan Modra <amodra@gmail.com>2007-11-15 05:20:30 +0000
commitfed590bb658baee680c11753ecff1b96f0bf3112 (patch)
tree093f8d4a573be32e46a25b3adfac430504227c79
parenta2b1aa12f7d82dfd451e110bff8df16cdf6e2c49 (diff)
downloadgdb-fed590bb658baee680c11753ecff1b96f0bf3112.zip
gdb-fed590bb658baee680c11753ecff1b96f0bf3112.tar.gz
gdb-fed590bb658baee680c11753ecff1b96f0bf3112.tar.bz2
PR 5328
* opncls.c (separate_debug_file_exists): Use fopen/fread rather than open/read and open in binary mode.
-rw-r--r--bfd/ChangeLog12
-rw-r--r--bfd/opncls.c10
2 files changed, 14 insertions, 8 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ca4f83f..a5b79ed 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-15 Alan Modra <amodra@bigpond.net.au>
+
+ PR 5328
+ * opncls.c (separate_debug_file_exists): Use fopen/fread
+ rather than open/read and open in binary mode.
+
2007-11-14 Richard Sandiford <richard@codesourcery.com>
* elfxx-mips.c (mips_got_page_range): New structure.
@@ -561,9 +567,9 @@
(read_rangelist): Change interface to accept a callback and data to
allow caller to select the action peformed on a new range list read.
(scan_unit_for_symbols): Use new interface of read_rangelist.
- (parse_comp_unit): Create an arange set for each new comp unit. Use new
- interface of read_rangelist. Replace call to arange_add with that to
- dwarf2_comp_unit_arange_add.
+ (parse_comp_unit): Create an arange set for each new comp unit.
+ Use new interface of read_rangelist. Replace call to arange_add
+ with that to dwarf2_comp_unit_arange_add.
(comp_unit_contains_address): Replace sequential search with a call to
arange_set_lookup_address, which can handles large set efficiently.
(stash_copy_local_aranges, stash_maybe_enable_arange_set,
diff --git a/bfd/opncls.c b/bfd/opncls.c
index 1ea0557..47fef70 100644
--- a/bfd/opncls.c
+++ b/bfd/opncls.c
@@ -1175,19 +1175,19 @@ separate_debug_file_exists (const char *name, const unsigned long crc)
{
static unsigned char buffer [8 * 1024];
unsigned long file_crc = 0;
- int fd;
+ FILE *f;
bfd_size_type count;
BFD_ASSERT (name);
- fd = open (name, O_RDONLY);
- if (fd < 0)
+ f = real_fopen (name, FOPEN_RB);
+ if (f == NULL)
return FALSE;
- while ((count = read (fd, buffer, sizeof (buffer))) > 0)
+ while ((count = fread (buffer, 1, sizeof (buffer), f)) > 0)
file_crc = bfd_calc_gnu_debuglink_crc32 (file_crc, buffer, count);
- close (fd);
+ fclose (f);
return crc == file_crc;
}