2004-02-11 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Wed, 11 Feb 2004 23:23:20 +0000 (23:23 +0000)
committerAndrew Cagney <cagney@redhat.com>
Wed, 11 Feb 2004 23:23:20 +0000 (23:23 +0000)
* bfd-in.h: Update copyright.
(bfd_tell): Change return type to file_ptr.
* bfd-in2.h: Re-generate.
* cache.c: Update copyright.
(bfd_cache_lookup_worker): Use real_fseek, do not cast offset
parameter.
(close_one): Use real_ftell.
* bfdio.c: Update copyright.
(real_ftell, real_fseek): New functions.
(bfd_tell): Use real_fseek and real_ftell, change return type to
file_ptr.
(bfd_seek): Use real_ftell and real_fseek, change type of
file_position to a file_ptr.
* libbfd-in.h: Update copyright.
(real_ftell, real_fseek): Declare.
* libbfd.h: Re-generate.

bfd/ChangeLog
bfd/bfd-in.h
bfd/bfd-in2.h
bfd/bfdio.c
bfd/cache.c
bfd/libbfd-in.h
bfd/libbfd.h

index 0e7e2c6cb0c29d5d9331151e34b14261bba4e391..4ab53c52640e894f7094b8c2e2a4623aee5c4bf4 100644 (file)
@@ -1,5 +1,22 @@
 2004-02-11  Andrew Cagney  <cagney@redhat.com>
 
+       * bfd-in.h: Update copyright.
+       (bfd_tell): Change return type to file_ptr.
+       * bfd-in2.h: Re-generate.
+       * cache.c: Update copyright.
+       (bfd_cache_lookup_worker): Use real_fseek, do not cast offset
+       parameter.
+       (close_one): Use real_ftell.
+       * bfdio.c: Update copyright.
+       (real_ftell, real_fseek): New functions.
+       (bfd_tell): Use real_fseek and real_ftell, change return type to
+       file_ptr.
+       (bfd_seek): Use real_ftell and real_fseek, change type of
+       file_position to a file_ptr.
+       * libbfd-in.h: Update copyright.
+       (real_ftell, real_fseek): Declare.
+       * libbfd.h: Re-generate.
+
        * configure.in (AC_CHECK_FUNCS): Check for ftello, ftello64,
        fseeko and fseeko64.  Determine bfd_file_ptr.
        * configure: Re-generate.
index ccfef1e9370c5e8491bd38a1d02509e19b3f7d6e..cf75f6375812c3cb6f3efad793ca75b3c0b2e132 100644 (file)
@@ -1,7 +1,7 @@
 /* Main header file for the bfd library -- portable access to object files.
 
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
@@ -456,7 +456,7 @@ extern void bfd_hash_traverse
 extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
 extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
 extern int bfd_seek (bfd *, file_ptr, int);
-extern ufile_ptr bfd_tell (bfd *);
+extern file_ptr bfd_tell (bfd *);
 extern int bfd_flush (bfd *);
 extern int bfd_stat (bfd *, struct stat *);
 
index f66c29ce23cff194e774c8bed641e0500770303c..ce809d49d31633ba2f5ed2f624e193d48f62f9a8 100644 (file)
@@ -8,7 +8,7 @@
 /* Main header file for the bfd library -- portable access to object files.
 
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
@@ -463,7 +463,7 @@ extern void bfd_hash_traverse
 extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
 extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
 extern int bfd_seek (bfd *, file_ptr, int);
-extern ufile_ptr bfd_tell (bfd *);
+extern file_ptr bfd_tell (bfd *);
 extern int bfd_flush (bfd *);
 extern int bfd_stat (bfd *, struct stat *);
 
index b196a52fdf1c7476947dfd7228bcec43c45e35e3..a90cb33ea5f87b3641093bd2433b545fedf5377a 100644 (file)
@@ -1,6 +1,8 @@
 /* Low-level I/O routines for BFDs.
-   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+   1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
    Written by Cygnus Support.
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -36,6 +38,30 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define S_IXOTH 0001    /* Execute by others.  */
 #endif
 
+file_ptr
+real_ftell (FILE *file)
+{
+#if defined (HAVE_FTELLO64)
+  return ftello64 (file);
+#elif defined (HAVE_FTELLO)
+  return ftello (file);
+#else
+  return ftell (file);
+#endif
+}
+
+int
+real_fseek (FILE *file, file_ptr offset, int whence)
+{
+#if defined (HAVE_FSEEKO64)
+  return fseeko64 (file, offset, whence);
+#elif defined (HAVE_FSEEKO)
+  return fseeko (file, offset, whence);
+#else
+  return fseek (file, offset, whence);
+#endif
+}
+
 /* Note that archive entries don't have streams; they share their parent's.
    This allows someone to play with the iostream behind BFD's back.
 
@@ -162,7 +188,7 @@ bfd_bwrite (const void *ptr, bfd_size_type size, bfd *abfd)
   return nwrote;
 }
 
-bfd_vma
+file_ptr
 bfd_tell (bfd *abfd)
 {
   file_ptr ptr;
@@ -170,7 +196,7 @@ bfd_tell (bfd *abfd)
   if ((abfd->flags & BFD_IN_MEMORY) != 0)
     return abfd->where;
 
-  ptr = ftell (bfd_cache_lookup (abfd));
+  ptr = real_ftell (bfd_cache_lookup (abfd));
 
   if (abfd->my_archive)
     ptr -= abfd->origin;
@@ -217,7 +243,7 @@ bfd_seek (bfd *abfd, file_ptr position, int direction)
 {
   int result;
   FILE *f;
-  long file_position;
+  file_ptr file_position;
   /* For the time being, a BFD may not seek to it's end.  The problem
      is that we don't easily have a way to recognize the end of an
      element in an archive.  */
@@ -278,7 +304,7 @@ bfd_seek (bfd *abfd, file_ptr position, int direction)
         tripping the abort, we can probably safely disable this code,
         so that the real optimizations happen.  */
       file_ptr where_am_i_now;
-      where_am_i_now = ftell (bfd_cache_lookup (abfd));
+      where_am_i_now = real_ftell (bfd_cache_lookup (abfd));
       if (abfd->my_archive)
        where_am_i_now -= abfd->origin;
       if (where_am_i_now != abfd->where)
@@ -307,7 +333,7 @@ bfd_seek (bfd *abfd, file_ptr position, int direction)
   if (direction == SEEK_SET && abfd->my_archive != NULL)
     file_position += abfd->origin;
 
-  result = fseek (f, file_position, direction);
+  result = real_fseek (f, file_position, direction);
   if (result != 0)
     {
       int hold_errno = errno;
index b3091659984c4c91d31ded8a49443b97f1fe76f1..7d056ea0cfa1b748d651f018d20b179cd367d627 100644 (file)
@@ -1,6 +1,8 @@
 /* BFD library -- caching of file descriptors.
-   Copyright 1990, 1991, 1992, 1993, 1994, 1996, 2000, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+
+   Copyright 1990, 1991, 1992, 1993, 1994, 1996, 2000, 2001, 2002,
+   2003, 2004 Free Software Foundation, Inc.
+
    Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -155,7 +157,7 @@ close_one (void)
       return TRUE;
     }
 
-  kill->where = ftell ((FILE *) kill->iostream);
+  kill->where = real_ftell ((FILE *) kill->iostream);
 
   return bfd_cache_delete (kill);
 }
@@ -356,7 +358,7 @@ bfd_cache_lookup_worker (bfd *abfd)
        return NULL;
       if (abfd->where != (unsigned long) abfd->where)
        return NULL;
-      if (fseek ((FILE *) abfd->iostream, (long) abfd->where, SEEK_SET) != 0)
+      if (real_fseek ((FILE *) abfd->iostream, abfd->where, SEEK_SET) != 0)
        return NULL;
     }
 
index 0ec808d5d359fd148ce41def8b8800f3038950b8..10cafefd6edd8b140dac09ee526e1e4468d4fd53 100644 (file)
@@ -1,8 +1,9 @@
 /* libbfd.h -- Declarations used by bfd library *implementation*.
    (This include file is not for users of the library.)
-   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+   1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
    Written by Cygnus Support.
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -594,6 +595,11 @@ extern void _bfd_abort
 #undef abort
 #define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
+/* Manipulate a system FILE but using BFD's "file_ptr", rather than
+   the system "off_t" or "off64_t", as the offset.  */
+extern file_ptr real_ftell (FILE *file);
+extern int real_fseek (FILE *file, file_ptr offset, int whence);
+
 FILE * bfd_cache_lookup_worker
   (bfd *);
 
index 40e1b789f9aa1bdf937135fcc57f6500ba68f18b..62043f3860ab5e855ac412f67239ae04ea0be676 100644 (file)
@@ -5,9 +5,10 @@
 
 /* libbfd.h -- Declarations used by bfd library *implementation*.
    (This include file is not for users of the library.)
-   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+   1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
    Written by Cygnus Support.
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -599,6 +600,11 @@ extern void _bfd_abort
 #undef abort
 #define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
+/* Manipulate a system FILE but using BFD's "file_ptr", rather than
+   the system "off_t" or "off64_t", as the offset.  */
+extern file_ptr real_ftell (FILE *file);
+extern int real_fseek (FILE *file, file_ptr offset, int whence);
+
 FILE * bfd_cache_lookup_worker
   (bfd *);