aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/ChangeLog10
-rw-r--r--ld/emultempl/armelf.em14
2 files changed, 12 insertions, 12 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 95ad24e..8123c0a 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,13 @@
+2008-08-26 Nick Clifton <nickc@redhat.com>
+
+ PR 6727
+ * emultempl/armelf.em (arm_elf_set_bfd_for_interworking): Scan all
+ input sections in all input bfds and always select the last
+ suitable one, so that interworking stubs are always processed
+ after all other input sections.
+ (arm_elf_before_allocation): Remove redundant use of
+ output_has_begun flag.
+
2008-08-24 Alan Modra <amodra@bigpond.net.au>
* configure.in: Update a number of obsolete autoconf macros.
diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
index d1d68c0..8d8a8fa 100644
--- a/ld/emultempl/armelf.em
+++ b/ld/emultempl/armelf.em
@@ -94,12 +94,8 @@ arm_elf_set_bfd_for_interworking (lang_statement_union_type *statement)
an empty section, etc. */
if ((output_section->flags & SEC_HAS_CONTENTS) != 0
&& (i->flags & SEC_NEVER_LOAD) == 0
- && ! (i->owner->flags & DYNAMIC)
- && ! i->owner->output_has_begun)
- {
- bfd_for_interwork = i->owner;
- bfd_for_interwork->output_has_begun = TRUE;
- }
+ && ! (i->owner->flags & DYNAMIC))
+ bfd_for_interwork = i->owner;
}
}
}
@@ -107,18 +103,12 @@ arm_elf_set_bfd_for_interworking (lang_statement_union_type *statement)
static void
arm_elf_before_allocation (void)
{
- bfd *tem;
-
if (link_info.input_bfds != NULL)
{
/* The interworking bfd must be the last one in the link. */
bfd_for_interwork = NULL;
- for (tem = link_info.input_bfds; tem != NULL; tem = tem->link_next)
- tem->output_has_begun = FALSE;
lang_for_each_statement (arm_elf_set_bfd_for_interworking);
- for (tem = link_info.input_bfds; tem != NULL; tem = tem->link_next)
- tem->output_has_begun = FALSE;
/* If bfd_for_interwork is NULL, then there are no loadable sections
with real contents to be linked, so we are not going to have to