diff options
author | Ian Lance Taylor <ian@airs.com> | 1994-02-25 19:42:43 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1994-02-25 19:42:43 +0000 |
commit | 626f883f94be40ee68ef2ec0cb6da1d948207384 (patch) | |
tree | 02ead2ca6498a03a6659ccd11c0d1b61f7890f4b /bfd/ecoff.c | |
parent | a62494c41be4df5acbb36f1fac4ac6018771e60c (diff) | |
download | gdb-626f883f94be40ee68ef2ec0cb6da1d948207384.zip gdb-626f883f94be40ee68ef2ec0cb6da1d948207384.tar.gz gdb-626f883f94be40ee68ef2ec0cb6da1d948207384.tar.bz2 |
* ecoff.c (ecoff_sizeof_headers): Align result to 16 byte
boundary.
Diffstat (limited to 'bfd/ecoff.c')
-rw-r--r-- | bfd/ecoff.c | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/bfd/ecoff.c b/bfd/ecoff.c index 1f74ca8..c99d724 100644 --- a/bfd/ecoff.c +++ b/bfd/ecoff.c @@ -2140,9 +2140,10 @@ ecoff_sizeof_headers (abfd, reloc) if (strcmp (current->name, REGINFO) != 0) ++c; - return (bfd_coff_filhsz (abfd) - + bfd_coff_aoutsz (abfd) - + c * bfd_coff_scnhsz (abfd)); + ret = (bfd_coff_filhsz (abfd) + + bfd_coff_aoutsz (abfd) + + c * bfd_coff_scnhsz (abfd)); + return BFD_ALIGN (ret, 16); } /* Get the contents of a section. This is where we handle reading the @@ -2831,24 +2832,28 @@ ecoff_write_object_contents (abfd) == false) return false; } - else if ((abfd->flags & EXEC_P) != 0 - && (abfd->flags & D_PAGED) != 0) - { - char c; + } - /* A demand paged executable must occupy an even number of - pages. */ - if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1, - SEEK_SET) != 0) - return false; - if (bfd_read (&c, 1, 1, abfd) == 0) - c = 0; - if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1, - SEEK_SET) != 0) - return false; - if (bfd_write (&c, 1, 1, abfd) != 1) - return false; - } + /* The .bss section of a demand paged executable must receive an + entire page. If there are symbols, the symbols will start on the + next page. If there are no symbols, we must fill out the page by + hand. */ + if (bfd_get_symcount (abfd) == 0 + && (abfd->flags & EXEC_P) != 0 + && (abfd->flags & D_PAGED) != 0) + { + char c; + + if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1, + SEEK_SET) != 0) + return false; + if (bfd_read (&c, 1, 1, abfd) == 0) + c = 0; + if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1, + SEEK_SET) != 0) + return false; + if (bfd_write (&c, 1, 1, abfd) != 1) + return false; } return true; @@ -3932,7 +3937,6 @@ ecoff_bfd_final_link (abfd, info) /* We accumulate the debugging information counts in the symbolic header. */ symhdr = &debug->symbolic_header; - symhdr->magic = backend->debug_swap.sym_magic; symhdr->vstamp = 0; symhdr->ilineMax = 0; symhdr->cbLine = 0; |