* cache.c (bfd_open_file): Set bfd_error_system_call on failure
authorAlan Modra <amodra@gmail.com>
Wed, 26 Oct 2005 04:29:53 +0000 (04:29 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 26 Oct 2005 04:29:53 +0000 (04:29 +0000)
to open file.
(bfd_cache_lookup_worker): Remove check that file pos is in
unsigned long range.  Print system error before aborting.

bfd/ChangeLog
bfd/cache.c

index c12c6ace830e0a7bbdc916c307f84cfea8d6b2e5..a1e35e0b1d2975bb98eb1f0ed7ba6b5a41981cd3 100644 (file)
@@ -1,3 +1,10 @@
+2005-10-26  Alan Modra  <amodra@bigpond.net.au>
+
+       * 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.
+
 2005-10-25  Arnold Metselaar  <arnold.metselaar@planet.nl>
 
        * Makefile.am: Add rules for coff-z80 and cpu-z80.
index e2524fbf15f06cca89031a6f972266bee5cb3f74..e9f38ab6b40a415a6e77d1d52bb4b713bc556f12 100644 (file)
@@ -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;
 }