summaryrefslogtreecommitdiff
path: root/bfd
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
parentb4ad899f0b73f79964c2278b8b044b07aa7f2215 (diff)
downloadbinutils-540b09cb7df7c3b34dd5dd9d8e5e6fea5d482baf.tar.gz
binutils-540b09cb7df7c3b34dd5dd9d8e5e6fea5d482baf.tar.bz2
binutils-540b09cb7df7c3b34dd5dd9d8e5e6fea5d482baf.zip
PR 1042
* elf.c (assign_file_positions_for_segments): Remove excluded sections from the segment map.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf.c10
2 files changed, 11 insertions, 5 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 388c568d9f6..87d7ee4c632 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,11 @@
2005-07-04 Alan Modra <amodra@bigpond.net.au>
+ PR 1042
+ * elf.c (assign_file_positions_for_segments): Remove excluded
+ sections from the segment map.
+
+2005-07-04 Alan Modra <amodra@bigpond.net.au>
+
PR 1004
* elf-bfd.h (struct elf_backend_data): Add get_sec_type_attr. Delete
special_sections.
diff --git a/bfd/elf.c b/bfd/elf.c
index 5bbe6503a24..0f9b6c27b9e 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];