diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1008a6619a1..bcfae55e8b1 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-17  Jie Zhang  <jie@codesourcery.com>
+
+	* elf.c (assign_file_positions_for_load_sections): Avoid
+	overflow.
+
 2010-03-17  Alan Modra  <amodra@gmail.com>
 
 	* plugin.c (bfd_plugin_object_p): Pass iostream to fileno using
diff --git a/bfd/elf.c b/bfd/elf.c
index dbb13d4d765..cee9b7a4455 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -4452,7 +4452,7 @@ assign_file_positions_for_load_sections (bfd *abfd,
 	    {
 	      bfd_signed_vma adjust = sec->vma - (p->p_vaddr + p->p_memsz);
 
-	      if (adjust < 0)
+	      if (sec->vma < p->p_vaddr + p->p_memsz)
 		{
 		  (*_bfd_error_handler)
 		    (_("%B: section %A vma 0x%lx overlaps previous sections"),