mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 02:24:17 +08:00
PR24144, pdp11-ld overwriting section data with zeros
bfd/ PR 24144 * pdp11.c (set_section_contents): Revert 2015-02-24 change. gas/ PR 24144 * config/obj-aout.c (obj_aout_frob_file_before_fix): Write to end of section to ensure file contents cover aligned section size.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2019-02-24 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR 24144
|
||||||
|
* pdp11.c (set_section_contents): Revert 2015-02-24 change.
|
||||||
|
|
||||||
2019-02-20 Eric Tsai <erictsai@cadence.com>
|
2019-02-20 Eric Tsai <erictsai@cadence.com>
|
||||||
|
|
||||||
* elf32-xtensa.c (is_resolvable_asm_expansion): Scan output
|
* elf32-xtensa.c (is_resolvable_asm_expansion): Scan output
|
||||||
|
@ -1146,14 +1146,6 @@ NAME (aout, set_section_contents) (bfd *abfd,
|
|||||||
if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
|
if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
|
||||||
|| bfd_bwrite (location, count, abfd) != count)
|
|| bfd_bwrite (location, count, abfd) != count)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* If necessary, pad the section to its aligned size. */
|
|
||||||
if ((section == obj_datasec (abfd)
|
|
||||||
|| section == obj_textsec (abfd))
|
|
||||||
&& count < section->size
|
|
||||||
&& (bfd_seek (abfd, section->filepos + offset + section->size - 1, SEEK_SET) != 0
|
|
||||||
|| bfd_bwrite ("", 1, abfd) != 1))
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2019-02-24 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR 24144
|
||||||
|
* config/obj-aout.c (obj_aout_frob_file_before_fix): Write to end
|
||||||
|
of section to ensure file contents cover aligned section size.
|
||||||
|
|
||||||
2019-02-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
2019-02-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
||||||
|
|
||||||
* config/tc-arm.c (arm_cpus): Add neoverse-n1.
|
* config/tc-arm.c (arm_cpus): Add neoverse-n1.
|
||||||
|
@ -118,17 +118,27 @@ obj_aout_frob_file_before_fix (void)
|
|||||||
{
|
{
|
||||||
/* Relocation processing may require knowing the VMAs of the sections.
|
/* Relocation processing may require knowing the VMAs of the sections.
|
||||||
Since writing to a section will cause the BFD back end to compute the
|
Since writing to a section will cause the BFD back end to compute the
|
||||||
VMAs, fake it out here.... */
|
VMAs, fake it out here....
|
||||||
bfd_byte b = 0;
|
Writing to the end of the section ensures the file contents
|
||||||
bfd_boolean x = TRUE;
|
extend to cover the entire aligned size. We possibly won't know
|
||||||
if (bfd_section_size (stdoutput, text_section) != 0)
|
the aligned size until after VMAs and sizes are set on the first
|
||||||
x = bfd_set_section_contents (stdoutput, text_section, &b, (file_ptr) 0,
|
bfd_set_section_contents call, so it might be necessary to repeat. */
|
||||||
(bfd_size_type) 1);
|
asection *sec = NULL;
|
||||||
else if (bfd_section_size (stdoutput, data_section) != 0)
|
if (data_section->size != 0)
|
||||||
x = bfd_set_section_contents (stdoutput, data_section, &b, (file_ptr) 0,
|
sec = data_section;
|
||||||
(bfd_size_type) 1);
|
else if (text_section->size != 0)
|
||||||
|
sec = text_section;
|
||||||
gas_assert (x);
|
if (sec)
|
||||||
|
{
|
||||||
|
bfd_size_type size;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
bfd_byte b = 0;
|
||||||
|
size = sec->size;
|
||||||
|
gas_assert (bfd_set_section_contents (stdoutput, sec, &b,
|
||||||
|
size - 1, (bfd_size_type) 1));
|
||||||
|
} while (size != sec->size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Reference in New Issue
Block a user