aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog4
-rw-r--r--bfd/elflink.c6
2 files changed, 7 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index a36f0f8..fc164dc 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2004-08-17 Alan Modra <amodra@bigpond.net.au>
+
+ * elflink.h (elf_gc_sweep): Keep non-alloc, non-load sections.
+
2004-08-17 Nick Clifton <nickc@redhat.com>
* (is_arm_mapping_symbol_name): New function - return true
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 00fa468..1e2f335 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -8504,9 +8504,9 @@ elf_gc_sweep (struct bfd_link_info *info, gc_sweep_hook_fn gc_sweep_hook)
for (o = sub->sections; o != NULL; o = o->next)
{
- /* Keep special sections. Keep .debug sections. */
- if ((o->flags & SEC_LINKER_CREATED)
- || (o->flags & SEC_DEBUGGING))
+ /* Keep debug and special sections. */
+ if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0
+ || (o->flags & (SEC_ALLOC | SEC_LOAD)) == 0)
o->gc_mark = 1;
if (o->gc_mark)