+2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/13180
+ * objcopy.c (is_strip_section_1): New.
+ (is_strip_section): Use it. Remove the group section if all
+ members are removed.
+
2011-09-08 Nick Clifton <nickc@redhat.com>
* po/ja.po: Updated Japanese translation.
return NULL;
}
-/* See if a section is being removed. */
+/* See if a non-group section is being removed. */
static bfd_boolean
-is_strip_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
+is_strip_section_1 (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
{
if (sections_removed || sections_copied)
{
return FALSE;
}
+ return FALSE;
+}
+
+/* See if a section is being removed. */
+
+static bfd_boolean
+is_strip_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
+{
+ if (is_strip_section_1 (abfd, sec))
+ return TRUE;
+
if ((bfd_get_section_flags (abfd, sec) & SEC_GROUP) != 0)
{
asymbol *gsym;
const char *gname;
+ asection *elt, *first;
/* PR binutils/3181
If we are going to strip the group signature symbol, then
&& !is_specified_symbol (gname, keep_specific_htab))
|| is_specified_symbol (gname, strip_specific_htab))
return TRUE;
+
+ /* Remove the group section if all members are removed. */
+ first = elt = elf_next_in_group (sec);
+ while (elt != NULL)
+ {
+ if (!is_strip_section_1 (abfd, elt))
+ return FALSE;
+ elt = elf_next_in_group (elt);
+ if (elt == first)
+ break;
+ }
+
+ return TRUE;
}
return FALSE;
+2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/13180
+ * binutils-all/group-6.d: New.
+ * binutils-all/group-6.s: Likewise.
+
+ * binutils-all/objcopy.exp: Run group-6 for ELF targrts.
+
2011-07-22 H.J. Lu <hongjiu.lu@intel.com>
* binutils-all/elfedit.exp: Run elfedit-4.