+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
 
                size, imgtype, (unsigned long)symvva,
                *eisd_offset, *eihs_offset));
 
-  return FALSE;
+  return TRUE;
 }
 
 /* Read & process EISD record.
 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)
           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;
 
       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;
         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;
         }
 
       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