summaryrefslogtreecommitdiff
path: root/bfd/coffgen.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2001-11-02 16:29:15 +0000
committerNick Clifton <nickc@redhat.com>2001-11-02 16:29:15 +0000
commit4279ab84d68f4c4616230b5fe19702f67a9bacb0 (patch)
tree8d74b4596458dc6f017a99d3aa2acb9efdc97dd4 /bfd/coffgen.c
parent9da7bd5ec2de8b1357ce399605162b2af3a17073 (diff)
downloadgdb-4279ab84d68f4c4616230b5fe19702f67a9bacb0.tar.gz
Add comment
Diffstat (limited to 'bfd/coffgen.c')
-rw-r--r--bfd/coffgen.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index 2ae435b2dcd..3ce9f7849d0 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -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)
{