+2007-03-08 Alan Modra <amodra@bigpond.net.au>
+
+ * ldlang.c (lang_size_sections_1): Correct backwards dot move
+ test to not trigger on overlays. Only warn on backwards move
+ if non-default lma.
+
2007-03-07 Joseph Myers <joseph@codesourcery.com>
* configure.in (REPORT_BUGS_TEXI): Define to Texinfo version of
* pe-dll.c: (make_one) Conditionally include jump stubs.
* emultempl/pe.em (gld_${EMULATION_NAME}_after_open): Identify
- redundant jump stubs from import libraries and exclude them from
+ redundant jump stubs from import libraries and exclude them from
link.
2007-01-19 H.J. Lu <hongjiu.lu@intel.com>
symbolic_unset and command_line.dynamic_list to
dynamic_list_unset. Check -Bsymbolic, -Bsymbolic-functions and
--dynamic-list* before setting link_info.symbolic,
- link_info.dynamic and link_info.dynamic_data.
+ link_info.dynamic and link_info.dynamic_data.
* lexsup.c (option_values): Add OPTION_SYMBOLIC_FUNCTIONS.
(ld_options): Use OPTION_SYMBOLIC_FUNCTIONS with
/* A backwards move of dot should be accompanied by
an explicit assignment to the section LMA (ie.
- os->load_base set) because backwards moves normally
+ os->load_base set) because backwards moves can
create overlapping LMAs. */
if (dot < last->vma
- && os->bfd_section->size != 0)
+ && os->bfd_section->size != 0
+ && dot + os->bfd_section->size <= last->vma)
{
- einfo (_("%P: warning: dot moved backwards before `%s'\n"),
- os->name);
-
/* If dot moved backwards then leave lma equal to
vma. This is the old default lma, which might
just happen to work when the backwards move is
- sufficiently large. Nag anyway, so people fix
- their linker scripts. */
+ sufficiently large. Nag if this changes anything,
+ so people can fix their linker scripts. */
+
+ if (last->vma != last->lma)
+ einfo (_("%P: warning: dot moved backwards before `%s'\n"),
+ os->name);
}
else
{