From: Alan Modra Date: Thu, 8 Mar 2007 04:38:45 +0000 (+0000) Subject: * ldlang.c (lang_size_sections_1): Correct backwards dot move X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=91eb6c46deee80bf5993d1316f13afe85cf0455f;p=binutils-gdb.git * 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. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index f1118699a7d..a411f64bfc1 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2007-03-08 Alan Modra + + * 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 * configure.in (REPORT_BUGS_TEXI): Define to Texinfo version of @@ -176,7 +182,7 @@ * 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 @@ -189,7 +195,7 @@ 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 diff --git a/ld/ldlang.c b/ld/ldlang.c index fa597f3c057..380f4875dad 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -4411,19 +4411,21 @@ lang_size_sections_1 /* 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 {