setup_archive parameter mismatch
authorAlan Modra <amodra@gmail.com>
Thu, 19 Mar 2020 01:17:45 +0000 (11:47 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 19 Mar 2020 01:25:04 +0000 (11:55 +1030)
* elfcomm.c (setup_archive): Make file_size an off_t.  Comment.
* elfcomm.h (setup_archive): Update prototype.

binutils/ChangeLog
binutils/elfcomm.c
binutils/elfcomm.h

index dad2ed6c2de5b3666324a0f9a9b7f30242d4042d..bfaeaf0e8f2153ba7c6326b497af7e8cd1a9c429 100644 (file)
@@ -1,3 +1,8 @@
+2020-03-19  Alan Modra  <amodra@gmail.com>
+
+       * elfcomm.c (setup_archive): Make file_size an off_t.  Comment.
+       * elfcomm.h (setup_archive): Update prototype.
+
 2020-03-16  Alan Modra  <amodra@gmail.com>
 
        * readelf.c (get_symbols): New function.
index e5c6a32c6da8bb6be398b43f68c39592fb193c75..b0fbf57e1f1aea05da4cd68f24d0421a2bdd2d9c 100644 (file)
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
    02110-1301, USA.  */
 
+/* Do not use BFD types in this file that differ in size depending on
+   whether BFD64 is defined.  Functions in this file are used by
+   readelf.c and elfedit.c which define BFD64, and by objdump.c which
+   doesn't.  */
+
 #include "sysdep.h"
 #include "libiberty.h"
 #include "filenames.h"
@@ -607,7 +612,7 @@ process_archive_index_and_symbols (struct archive_info *  arch,
 
 int
 setup_archive (struct archive_info *arch, const char *file_name,
-              FILE *file, bfd_size_type file_size,
+              FILE *file, off_t file_size,
               bfd_boolean is_thin_archive, bfd_boolean read_symbols)
 {
   size_t got;
@@ -671,7 +676,7 @@ setup_archive (struct archive_info *arch, const char *file_name,
          return 1;
        }
       /* PR 17531: file: 639d6a26.  */
-      if (arch->longnames_size > file_size
+      if ((off_t) arch->longnames_size > file_size
          || (signed long) arch->longnames_size < 0)
        {
          error (_("%s: long name table is too big, (size = 0x%lx)\n"),
index 731d3dbd346caba5169ebbbff637c1a078a847e2..8d962f2731c370a69537521ed6e9f17435b17e11 100644 (file)
@@ -74,7 +74,7 @@ extern char *adjust_relative_path (const char *, const char *, unsigned long);
 
 /* Read the symbol table and long-name table from an archive.  */
 extern int setup_archive (struct archive_info *, const char *, FILE *,
-                         bfd_size_type, bfd_boolean, bfd_boolean);
+                         off_t, bfd_boolean, bfd_boolean);
 
 /* Open and setup a nested archive, if not already open.  */
 extern int setup_nested_archive (struct archive_info *, const char *);