aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1994-01-25 01:50:46 +0000
committerIan Lance Taylor <ian@airs.com>1994-01-25 01:50:46 +0000
commit1fe2801ae61d3c10ea6f3714fbff930640fdadbf (patch)
tree62156838ef55af0d8f9c2215584435d75b586811 /bfd
parentf71babce75525dd94b465135ed96f912b3460ea1 (diff)
downloadgdb-1fe2801ae61d3c10ea6f3714fbff930640fdadbf.zip
gdb-1fe2801ae61d3c10ea6f3714fbff930640fdadbf.tar.gz
gdb-1fe2801ae61d3c10ea6f3714fbff930640fdadbf.tar.bz2
* ecofflink.c (ecoff_align_debug): Align RFDs to debug_align.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ecofflink.c14
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;