diff options
author | Alan Modra <amodra@gmail.com> | 2019-12-13 16:14:57 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2019-12-13 21:23:15 +1030 |
commit | 0bc3450e220a4fb29f931ada84b546ce8993e85e (patch) | |
tree | fa87940fb2889586fdedaf475172f47bb12a2529 | |
parent | c7ff3609c188d15692b5db53d4292fbabce8171a (diff) | |
download | binutils-0bc3450e220a4fb29f931ada84b546ce8993e85e.zip binutils-0bc3450e220a4fb29f931ada84b546ce8993e85e.tar.gz binutils-0bc3450e220a4fb29f931ada84b546ce8993e85e.tar.bz2 |
Set no file contents PT_LOAD p_offset to first page
PR 25237
* elf.c (assign_file_positions_for_load_sections): Attempt to
keep meaningless p_offset for PT_LOAD segments without file
contents within file size.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elf.c | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7c3cf29..f1a707d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2019-12-13 Alan Modra <amodra@gmail.com> + + PR 25237 + * elf.c: (assign_file_positions_for_load_sections): Attempt to + keep meaningless p_offset for PT_LOAD segments without file + contents within file size. + 2019-12-12 Alan Modra <amodra@gmail.com> * libbfd.c (bfd_get): Don't cast result of bfd_get_8. @@ -5752,7 +5752,15 @@ assign_file_positions_for_load_sections (bfd *abfd, || (p->p_type == PT_NOTE && bfd_get_format (abfd) == bfd_core)) { if (!m->includes_filehdr && !m->includes_phdrs) - p->p_offset = off; + { + p->p_offset = off; + if (no_contents) + /* Put meaningless p_offset for PT_LOAD segments + without file contents somewhere within the first + page, in an attempt to not point past EOF. */ + p->p_offset = off % (p->p_align > maxpagesize + ? p->p_align : maxpagesize); + } else { file_ptr adjust; |