2010-05-14 Tristan Gingold <gingold@adacore.com>
authorTristan Gingold <gingold@adacore.com>
Fri, 14 May 2010 07:45:02 +0000 (07:45 +0000)
committerTristan Gingold <gingold@adacore.com>
Fri, 14 May 2010 07:45:02 +0000 (07:45 +0000)
* vms-alpha.c (alpha_vms_object_p): Accept header size of 0.
(_bfd_vms_get_object_record): Handle align byte only in the
foreign case.

bfd/ChangeLog
bfd/vms-alpha.c

index 7096709..02f9c05 100644 (file)
@@ -1,5 +1,11 @@
 2010-05-14  Tristan Gingold  <gingold@adacore.com>
 
+       * vms-alpha.c (alpha_vms_object_p): Accept header size of 0.
+       (_bfd_vms_get_object_record): Handle align byte only in the
+       foreign case.
+
+2010-05-14  Tristan Gingold  <gingold@adacore.com>
+
        * vms-lib.c (_bfd_vms_lib_ia64_archive_p): New function.
        * libbfd-in.h (_bfd_vms_lib_ia64_archive_p): Add prototype.
        * libbfd.h: Regenerate.
index 5ae54c2..c4e4c9c 100644 (file)
@@ -759,7 +759,7 @@ _bfd_vms_get_object_record (bfd *abfd)
   vms_debug2 ((8, "_bfd_vms_get_obj_record\n"));
 
   /* Skip alignment byte if the current position is odd.  */
-  if (bfd_tell (abfd) & 1)
+  if (PRIV (recrd.file_format) == FF_FOREIGN && (bfd_tell (abfd) & 1))
     {
       if (bfd_bread (PRIV (recrd.buf), 1, abfd) != 1)
         {
@@ -2450,6 +2450,10 @@ alpha_vms_object_p (bfd *abfd)
       /* Extract the header size.  */
       PRIV (recrd.rec_size) = bfd_getl32 (buf + EIHD__L_SIZE);
 
+      /* The header size is 0 for DSF files.  */
+      if (PRIV (recrd.rec_size) == 0)
+        PRIV (recrd.rec_size) = sizeof (struct vms_eihd);
+
       if (PRIV (recrd.rec_size) > PRIV (recrd.buf_size))
         {
           buf = bfd_realloc_or_free (buf, PRIV (recrd.rec_size));