aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2005-07-04 10:30:09 +0000
committerAlan Modra <amodra@gmail.com>2005-07-04 10:30:09 +0000
commit540b09cb7df7c3b34dd5dd9d8e5e6fea5d482baf (patch)
tree5c3536b781f344a045bbe7209fb70ea299857e4d /bfd/elf.c
parentb4ad899f0b73f79964c2278b8b044b07aa7f2215 (diff)
downloadgdb-540b09cb7df7c3b34dd5dd9d8e5e6fea5d482baf.zip
gdb-540b09cb7df7c3b34dd5dd9d8e5e6fea5d482baf.tar.gz
gdb-540b09cb7df7c3b34dd5dd9d8e5e6fea5d482baf.tar.bz2
PR 1042
* elf.c (assign_file_positions_for_segments): Remove excluded sections from the segment map.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r--bfd/elf.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/bfd/elf.c b/bfd/elf.c
index 5bbe650..0f9b6c2 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -4044,7 +4044,8 @@ assign_file_positions_for_segments (bfd *abfd, struct bfd_link_info *link_info)
{
/* The placement algorithm assumes that non allocated sections are
not in PT_LOAD segments. We ensure this here by removing such
- sections from the segment map. */
+ sections from the segment map. We also remove excluded
+ sections. */
for (m = elf_tdata (abfd)->segment_map;
m != NULL;
m = m->next)
@@ -4052,13 +4053,12 @@ assign_file_positions_for_segments (bfd *abfd, struct bfd_link_info *link_info)
unsigned int new_count;
unsigned int i;
- if (m->p_type != PT_LOAD)
- continue;
-
new_count = 0;
for (i = 0; i < m->count; i ++)
{
- if ((m->sections[i]->flags & SEC_ALLOC) != 0)
+ if ((m->sections[i]->flags & SEC_EXCLUDE) == 0
+ && ((m->sections[i]->flags & SEC_ALLOC) != 0
+ || m->p_type != PT_LOAD))
{
if (i != new_count)
m->sections[new_count] = m->sections[i];