diff --git a/gold/ChangeLog b/gold/ChangeLog
index 7fdc7bf5c88..a74d96c1277 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,11 @@
+2015-07-21  Cary Coutant  <ccoutant@gmail.com>
+
+	PR gold/18548
+	* symtab.cc (Symbol_table::do_define_in_output_data): Check for
+	forced local symbol even when oldsym != NULL.
+	(Symbol_table::do_define_in_output_segment): Likewise.
+	(Symbol_table::do_define_as_constant): Likewise.
+
 2015-07-21  Cary Coutant  <ccoutant@gmail.com>
 
 	PR gold/18698
diff --git a/gold/symtab.cc b/gold/symtab.cc
index 925296a8c28..31ecc5c2638 100644
--- a/gold/symtab.cc
+++ b/gold/symtab.cc
@@ -1953,6 +1953,9 @@ Symbol_table::do_define_in_output_data(
     return sym;
   else
     {
+      if (binding == elfcpp::STB_LOCAL
+	  || this->version_script_.symbol_is_local(name))
+	this->force_local(oldsym);
       delete sym;
       return oldsym;
     }
@@ -2067,6 +2070,9 @@ Symbol_table::do_define_in_output_segment(
     return sym;
   else
     {
+      if (binding == elfcpp::STB_LOCAL
+	  || this->version_script_.symbol_is_local(name))
+	this->force_local(oldsym);
       delete sym;
       return oldsym;
     }
@@ -2186,6 +2192,9 @@ Symbol_table::do_define_as_constant(
     return sym;
   else
     {
+      if (binding == elfcpp::STB_LOCAL
+	  || this->version_script_.symbol_is_local(name))
+	this->force_local(oldsym);
       delete sym;
       return oldsym;
     }