PR25569, PDP11 ld -s clobbers last data byte
authorAlan Modra <amodra@gmail.com>
Thu, 20 Feb 2020 11:23:44 +0000 (21:53 +1030)
committerAlan Modra <amodra@gmail.com>
Fri, 21 Feb 2020 00:17:05 +0000 (10:47 +1030)
commitdda2980f54a0c9437de047f3020f520dd1e0de6a
tree0cec5fd8cca1430f9ebf92c851d58dab01c39ba0
parent6565bf67add96edbe99c24acb312fe84079ab6a0
PR25569, PDP11 ld -s clobbers last data byte

This patch fixes an ancient wart in aout support, in that text and
data section sizes are rounded up for alignment rather that just the
corresponding header sizes.  Changing section sizes could conceivably
result in buffer overflows if section contents were held in memory.
Also, keeping the original section sizes allows this PR to be fixed
nicely.

bfd/
PR 25569
* aoutx.h (adjust_o_magic, adjust_z_magic, adjust_n_magic): Use
"text", "data" and "bss" section pointer vars.  Don't update
section size, just exec header sizes.
(adjust_sizes_and_vmas): Don't update text section size.  Set
initial exec header a_text.  Print exec headers sizes.
* pdp11.c (adjust_o_magic, adjust_z_magic, adjust_n_magic),
(adjust_sizes_and_vmas): Similarly.  Formatting.
(final_link): Correct final file extension.
gas/
PR 25569
* config/obj-aout.c (obj_aout_frob_file_before_fix): Don't loop
on section size adjustment, instead perform another write if
exec header size is larger than section size.
bfd/ChangeLog
bfd/aoutx.h
bfd/pdp11.c
gas/ChangeLog
gas/config/obj-aout.c