diff options
-rw-r--r-- | bfd/ecofflink.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/bfd/ecofflink.c b/bfd/ecofflink.c index e606be6..523a4bf 100644 --- a/bfd/ecofflink.c +++ b/bfd/ecofflink.c @@ -1069,12 +1069,13 @@ ecoff_align_debug (abfd, debug, swap) const struct ecoff_debug_swap *swap; { HDRR * const symhdr = &debug->symbolic_header; - bfd_size_type debug_align, aux_align; + bfd_size_type debug_align, aux_align, rfd_align; size_t add; /* Adjust the counts so that structures are aligned. */ debug_align = swap->debug_align; aux_align = debug_align / sizeof (union aux_ext); + rfd_align = debug_align / swap->external_rfd_size; add = debug_align - (symhdr->cbLine & (debug_align - 1)); if (add != debug_align) @@ -1108,6 +1109,16 @@ ecoff_align_debug (abfd, debug, swap) add * sizeof (union aux_ext)); symhdr->iauxMax += add; } + + add = rfd_align - (symhdr->crfd & (rfd_align - 1)); + if (add != rfd_align) + { + if (debug->external_rfd != (PTR) NULL) + memset (((char *) debug->external_rfd + + symhdr->crfd * swap->external_rfd_size), + 0, add * swap->external_rfd_size); + symhdr->crfd += add; + } } /* Return the size required by the ECOFF debugging information. */ @@ -1300,7 +1311,6 @@ bfd_ecoff_write_accumulated_debug (handle, abfd, debug, swap, info, where) { struct accumulate *ainfo = (struct accumulate *) handle; PTR space; - FDR fdr; if (! ecoff_write_symhdr (abfd, debug, swap, where)) return false; |