aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/ldlang.c12
2 files changed, 13 insertions, 4 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 4155b2a..c7eade5 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2007-02-06 Alan Modra <amodra@bigpond.net.au>
+
+ * ldlang.c (lang_size_sections_1): Don't warn on backwards dot
+ move unless section size is non-zero.
+
2007-02-05 Dave Brolley <brolley@redhat.com>
* Makefile.am (ALL_EMULATIONS): Add support for Toshiba MeP.
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 030887d..ac680a5 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -1,6 +1,6 @@
/* Linker command language support.
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007
Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -4413,7 +4413,8 @@ lang_size_sections_1
an explicit assignment to the section LMA (ie.
os->load_base set) because backwards moves normally
create overlapping LMAs. */
- if (dot < last->vma)
+ if (dot < last->vma
+ && os->bfd_section->size != 0)
{
einfo (_("%P: warning: dot moved backwards before `%s'\n"),
os->name);
@@ -4463,8 +4464,11 @@ lang_size_sections_1
|| (os->bfd_section->flags & SEC_THREAD_LOCAL) == 0)
&& (os->bfd_section->flags & SEC_ALLOC) != 0
&& (os->bfd_section->size != 0
- || os->bfd_section->vma != os->bfd_section->lma
- || r->last_os != NULL)
+ || (r->last_os == NULL
+ && os->bfd_section->vma != os->bfd_section->lma)
+ || (r->last_os != NULL
+ && dot >= (r->last_os->output_section_statement
+ .bfd_section->vma))
&& os->lma_region == NULL
&& !link_info.relocatable)
r->last_os = s;