diff options
author | Nick Clifton <nickc@redhat.com> | 2008-07-22 11:19:01 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2008-07-22 11:19:01 +0000 |
commit | 39948a609d7a459fbf1872bcc3a656929f5b6798 (patch) | |
tree | 191505dd60a50d8b984917182d19a2894867d148 | |
parent | 570de99165f5eb094f2b2a0ba84bae3fd53032ee (diff) | |
download | gdb-39948a609d7a459fbf1872bcc3a656929f5b6798.zip gdb-39948a609d7a459fbf1872bcc3a656929f5b6798.tar.gz gdb-39948a609d7a459fbf1872bcc3a656929f5b6798.tar.bz2 |
* elf.c (_bfd_elf_map_sections_to_segments): Allow sections in
adjoining pages to be included in the same segment.
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf.c | 11 |
2 files changed, 14 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3616c0f..1b5f018 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2008-07-22 Nick Clifton <nickc@redhat.com> + + * elf.c (_bfd_elf_map_sections_to_segments): Allow sections in + adjoining pages to be included in the same segment. + 2008-07-22 Simon Baldwin <simonb@google.com> * elflink.c (elf_link_output_extsym): Set st_size to zero for @@ -3720,8 +3720,15 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info) segment. */ new_segment = TRUE; } - else if (BFD_ALIGN (last_hdr->lma + last_size, maxpagesize) - < BFD_ALIGN (hdr->lma, maxpagesize)) + /* In the next test we have to be careful when last_hdr->lma is close + to the end of the address space. If the aligned address wraps + around to the start of the address space, then there are no more + pages left in memory and it is OK to assume that the current + section can be included in the current segment. */ + else if ((BFD_ALIGN (last_hdr->lma + last_size, maxpagesize) + maxpagesize + > last_hdr->lma) + && (BFD_ALIGN (last_hdr->lma + last_size, maxpagesize) + maxpagesize + < hdr->lma)) { /* If putting this section in this segment would force us to skip a page in the segment, then we need a new segment. */ |