2010-04-16 Tristan Gingold <gingold@adacore.com>
authorTristan Gingold <gingold@adacore.com>
Fri, 16 Apr 2010 14:23:41 +0000 (14:23 +0000)
committerTristan Gingold <gingold@adacore.com>
Fri, 16 Apr 2010 14:23:41 +0000 (14:23 +0000)
* vms-alpha.c (_bfd_vms_slurp_eihd): Fix typo.
(_bfd_vms_get_object_record): Always assume there is a pad byte
for alignment.
* vms-lib.c: Add a few comments.

bfd/ChangeLog
bfd/vms-alpha.c
bfd/vms-lib.c

index 56f977b..195590d 100644 (file)
@@ -1,3 +1,10 @@
+2010-04-16  Tristan Gingold  <gingold@adacore.com>
+
+       * vms-alpha.c (_bfd_vms_slurp_eihd): Fix typo.
+       (_bfd_vms_get_object_record): Always assume there is a pad byte
+       for alignment.
+       * vms-lib.c: Add a few comments.
+
 2010-04-15  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
 
        * elf32-arm.c (elf32_arm_merge_eabi_attributes): Support additions to
index e213f4e..65dafa1 100644 (file)
@@ -492,7 +492,7 @@ _bfd_vms_slurp_eihd (bfd *abfd, unsigned int *eisd_offset,
                size, imgtype, (unsigned long)symvva,
                *eisd_offset, *eihs_offset));
 
-  return FALSE;
+  return TRUE;
 }
 
 /* Read & process EISD record.
@@ -753,15 +753,12 @@ maybe_adjust_record_pointer_for_object (bfd *abfd)
 static int
 _bfd_vms_get_object_record (bfd *abfd)
 {
-  unsigned int test_len;
+  unsigned int test_len = 6;
   int type;
-  int off = 0;
 
   vms_debug2 ((8, "_bfd_vms_get_obj_record\n"));
 
-  test_len = 6;
-
-  /* Skip odd alignment byte.  */
+  /* Skip alignment byte if the current position is odd.  */
   if (bfd_tell (abfd) & 1)
     {
       if (bfd_bread (PRIV (recrd.buf), 1, abfd) != 1)
@@ -769,16 +766,10 @@ _bfd_vms_get_object_record (bfd *abfd)
           bfd_set_error (bfd_error_file_truncated);
           return -1;
         }
-      /* Alignment byte may be present or not.  This is not easy to
-         detect but all object record types are not 0 (on Alpha VMS).
-         We also hope that pad byte is 0.  */
-      if (PRIV (recrd.buf)[0])
-        off = 1;
     }
 
   /* Read the record header  */
-  if (bfd_bread (PRIV (recrd.buf) + off, test_len - off, abfd)
-      != test_len - off)
+  if (bfd_bread (PRIV (recrd.buf), test_len, abfd) != test_len)
     {
       bfd_set_error (bfd_error_file_truncated);
       return -1;
index 4f7da81..d05fab7 100644 (file)
@@ -557,6 +557,7 @@ vms_lib_bread_raw (struct bfd *abfd, void *buf, file_ptr nbytes)
       if (!vms_lib_read_block (abfd))
         return -1;
 
+      /* Do not read past the data block, do not read more than requested.  */
       l = DATA__LENGTH - vec->blk_off;
       if (l > nbytes)
         l = nbytes;
@@ -564,11 +565,13 @@ vms_lib_bread_raw (struct bfd *abfd, void *buf, file_ptr nbytes)
         return 0;
       if (buf != NULL)
         {
+          /* Really read into BUF.  */
           if (bfd_bread (buf, l, abfd->my_archive) != l)
             return -1;
         }
       else
         {
+          /* Make as if we are reading.  */
           if (bfd_seek (abfd->my_archive, l, SEEK_CUR) != 0)
             return -1;
         }
@@ -818,6 +821,7 @@ vms_lib_bread (struct bfd *abfd, void *buf, file_ptr nbytes)
 
       if (vec->rec_rem == 0)
         {
+          /* End of record reached.  */
           if (bfd_libdata (abfd->my_archive)->kind == vms_lib_txt)
             {
               if ((vec->rec_len & 1) == 1