Add comment
authorNick Clifton <nickc@redhat.com>
Fri, 2 Nov 2001 16:29:15 +0000 (16:29 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 2 Nov 2001 16:29:15 +0000 (16:29 +0000)
bfd/ChangeLog
bfd/coffgen.c

index ce54d18fd61277863f292c2295fb12c66922dba7..c5896e1d9746e77aef5b553d14706cb5becf54ab 100644 (file)
@@ -1,3 +1,7 @@
+2001-11-02  Nick Clifton  <nickc@cambridge.redhat.com>
+
+       * coffgen.c (coff_object_p): Add comment to H.J.'s recent patch.
+
 2001-11-02  John David Anglin  <dave@hiauly1.hia.nrc.ca>
 
        * som.c (setup_sections): Initialize subspace_sections.
index 2ae435b2dcd1a6f6a459d89b7978c8b4e6c2ea5d..3ce9f7849d02365ae2505cd4b784b0dd8d83b29a 100644 (file)
@@ -280,6 +280,14 @@ coff_object_p (abfd)
   bfd_coff_swap_filehdr_in (abfd, filehdr, &internal_f);
   bfd_release (abfd, filehdr);
 
+  /* The XCOFF format has two sizes for the f_opthdr.  SMALL_AOUTSZ
+     (less than aoutsz) used in object files and AOUTSZ (equal to
+     aoutsz) in executables.  The bfd_coff_swap_aouthdr_in function
+     expects this header to be aoutsz bytes in length, so we use that
+     value in the call to bfd_alloc below.  But we must be careful to
+     only read in f_opthdr bytes in the call to bfd_bread.  We should
+     also attempt to catch corrupt or non-COFF binaries with a strange
+     value for f_opthdr.  */
   if (bfd_coff_bad_format_hook (abfd, &internal_f) == false
       || internal_f.f_opthdr > aoutsz)
     {
@@ -294,7 +302,7 @@ coff_object_p (abfd)
 
       opthdr = bfd_alloc (abfd, aoutsz);
       if (opthdr == NULL)
-       return 0;;
+       return 0;
       if (bfd_bread (opthdr, (bfd_size_type) internal_f.f_opthdr, abfd)
          != internal_f.f_opthdr)
        {