aboutsummaryrefslogtreecommitdiff
path: root/bfd/cache.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2005-10-26 04:29:53 +0000
committerAlan Modra <amodra@gmail.com>2005-10-26 04:29:53 +0000
commit5c91cdfb252222206a3a1139de7b6200b421e043 (patch)
treebbe8166a9690b576551f92e5b0eca4c1bfdf2015 /bfd/cache.c
parentee4ced6a5c895a92192d4b7c8f01680ce0447773 (diff)
downloadfsf-binutils-gdb-5c91cdfb252222206a3a1139de7b6200b421e043.zip
fsf-binutils-gdb-5c91cdfb252222206a3a1139de7b6200b421e043.tar.gz
fsf-binutils-gdb-5c91cdfb252222206a3a1139de7b6200b421e043.tar.bz2
* cache.c (bfd_open_file): Set bfd_error_system_call on failure
to open file. (bfd_cache_lookup_worker): Remove check that file pos is in unsigned long range. Print system error before aborting.
Diffstat (limited to 'bfd/cache.c')
-rw-r--r--bfd/cache.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/bfd/cache.c b/bfd/cache.c
index e2524fb..e9f38ab 100644
--- a/bfd/cache.c
+++ b/bfd/cache.c
@@ -447,7 +447,9 @@ bfd_open_file (bfd *abfd)
break;
}
- if (abfd->iostream != NULL)
+ if (abfd->iostream == NULL)
+ bfd_set_error (bfd_error_system_call);
+ else
{
if (! bfd_cache_init (abfd))
return NULL;
@@ -489,14 +491,17 @@ bfd_cache_lookup_worker (bfd *abfd)
snip (abfd);
insert (abfd);
}
+ return (FILE *) abfd->iostream;
}
+
+ if (bfd_open_file (abfd) == NULL)
+ ;
+ else if (real_fseek ((FILE *) abfd->iostream, abfd->where, SEEK_SET) != 0)
+ bfd_set_error (bfd_error_system_call);
else
- {
- if (bfd_open_file (abfd) == NULL
- || abfd->where != (unsigned long) abfd->where
- || real_fseek ((FILE *) abfd->iostream, abfd->where, SEEK_SET) != 0)
- abort ();
- }
+ return (FILE *) abfd->iostream;
- return (FILE *) abfd->iostream;
+ bfd_perror ("Cannot continue");
+ abort ();
+ return NULL;
}