diff --git a/gas/ChangeLog b/gas/ChangeLog
index 961a722425d492b78bf4fd4852fddaec894f0043..2ff1e5043f32fc52316981f9a3719acdcde919ea 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* write.c (adjust_reloc_syms): Undo the change made on
+	2005-04-26 to allow local symbol set to undefined symbol.
+
 2005-10-24  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* Makefile.am (bfin-parse.tab.h): Removed.
diff --git a/gas/write.c b/gas/write.c
index 5546b6849eca0412c7f7ad71535868f53c25d096..06133679b54df38a4e0a3edd08e6252c9e8cc1ca 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -681,17 +681,8 @@ adjust_reloc_syms (bfd *abfd ATTRIBUTE_UNUSED,
 	if (symbol_equated_reloc_p (sym)
 	    || S_IS_WEAKREFR (sym))
 	  {
-	    symbolS *new_sym
-	      = symbol_get_value_expression (sym)->X_add_symbol;
-	    const char *name = S_GET_NAME (sym);
-	    if (!S_IS_COMMON (new_sym)
-		&& !TC_FAKE_LABEL (name)
-		&& !S_IS_WEAKREFR (sym)
-		&& (!S_IS_EXTERNAL (sym) || S_IS_LOCAL (sym)))
-	      as_bad (_("Local symbol `%s' can't be equated to undefined symbol `%s'"),
-		      name, S_GET_NAME (new_sym));
 	    fixp->fx_offset += symbol_get_value_expression (sym)->X_add_number;
-	    sym = new_sym;
+	    sym = symbol_get_value_expression (sym)->X_add_symbol;
 	    fixp->fx_addsy = sym;
 	  }