+2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elflink.c (elf_mark_used_section): New.
+ (bfd_elf_gc_sections): Call elf_gc_mark_section for
+ non-relocatable link if we don't do GC.
+
2005-03-16 Nick Clifton <nickc@redhat.com>
Ben Elliston <bje@au.ibm.com>
return TRUE;
}
+
+/* Mark sections containing global symbols. This is called through
+ elf_link_hash_traverse. */
+static bfd_boolean
+elf_mark_used_section (struct elf_link_hash_entry *h,
+ void *global ATTRIBUTE_UNUSED)
+{
+ if (h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ if ((h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak))
+ {
+ asection *s = h->root.u.def.section->output_section;
+ if (s)
+ s->flags |= SEC_KEEP;
+ }
+
+ return TRUE;
+}
+
/* Do mark and sweep of unused sections. */
bfd_boolean
(asection *, struct bfd_link_info *, Elf_Internal_Rela *,
struct elf_link_hash_entry *h, Elf_Internal_Sym *);
+ if (!info->gc_sections)
+ {
+ /* If we are called when info->gc_sections is 0, we will mark
+ all sections containing global symbols for non-relocable
+ link. */
+ if (!info->relocatable)
+ elf_link_hash_traverse (elf_hash_table (info),
+ elf_mark_used_section, NULL);
+ return TRUE;
+ }
+
if (!get_elf_backend_data (abfd)->can_gc_sections
|| info->relocatable
|| info->emitrelocations
+2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ * bfdlink.h (bfd_link_info): Add gc_sections.
+
2005-03-12 Zack Weinberg <zack@codesourcery.com>
* opcode/arm.h: Adjust comments for ARM_EXT_V4T and ARM_EXT_V5T.
/* TRUE if we should warn when adding a DT_TEXTREL to a shared object. */
unsigned int warn_shared_textrel: 1;
+ /* TRUE if unreferenced sections should be removed. */
+ unsigned int gc_sections: 1;
+
/* What to do with unresolved symbols in an object file.
When producing executables the default is GENERATE_ERROR.
When producing shared libraries the default is IGNORE. The