* elfcomm.c (setup_archive): Extract index table and symbol table
[deliverable/binutils-gdb.git] / binutils / readelf.c
index 2fcd5827d6540251c517fb39f86f6f9f54a43d00..e6f2be6b0d0ea59be58c104a12385dfcce79bdeb 100644 (file)
@@ -13442,7 +13442,7 @@ process_archive (char * file_name, FILE * file, bfd_boolean is_thin_archive)
          unsigned long current_pos;
 
          printf (_("Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"),
-                 file_name, arch.index_num, arch.sym_size);
+                 file_name, (long) arch.index_num, arch.sym_size);
          current_pos = ftell (file);
 
          for (i = l = 0; i < arch.index_num; i++)
@@ -13459,8 +13459,9 @@ process_archive (char * file_name, FILE * file, bfd_boolean is_thin_archive)
 
                       if (qualified_name != NULL)
                         {
-                         printf (_("Binary %s at offset 0x%lx contains:\n"),
-                                 qualified_name, arch.index_array[i]);
+                         printf (_("Contents of binary %s at offset "), qualified_name);
+                         (void) print_vma (arch.index_array[i], PREFIX_HEX);
+                         putchar ('\n');
                          free (qualified_name);
                        }
                    }
@@ -13476,11 +13477,14 @@ process_archive (char * file_name, FILE * file, bfd_boolean is_thin_archive)
              l += strlen (arch.sym_table + l) + 1;
            }
 
-          if (l & 01)
-            ++l;
+         if (arch.uses_64bit_indicies)
+           l = (l + 7) & ~ 7;
+         else
+           l += l & 1;
+
          if (l < arch.sym_size)
-           error (_("%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"),
-                  file_name);
+           error (_("%s: %ld bytes remain in the symbol table, but without corresponding entries in the index table\n"),
+                  file_name, arch.sym_size - l);
 
          if (fseek (file, current_pos, SEEK_SET) != 0)
            {
This page took 0.027411 seconds and 4 git commands to generate.