From a3371076af12586b4d0544dbdc12df2f670afbe3 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Wed, 23 Sep 2009 06:10:08 +0000
Subject: [PATCH] 	* symbols.c (define_sym_at_dot): New function,
 extracted from.. 	(colon): ..here.  Define error case cloned symbol.

---
 gas/ChangeLog |  5 +++++
 gas/symbols.c | 26 ++++++++++++++------------
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0f4d02456ad..28099ba6a13 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2009-09-23  Alan Modra  <amodra@bigpond.net.au>
+
+	* symbols.c (define_sym_at_dot): New function, extracted from..
+	(colon): ..here.  Define error case cloned symbol.
+
 2009-09-21  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* config/tc-i386.c: Remove white spaces.
diff --git a/gas/symbols.c b/gas/symbols.c
index 61623189cbf..304a1eeb6e8 100644
--- a/gas/symbols.c
+++ b/gas/symbols.c
@@ -246,6 +246,17 @@ local_symbol_convert (struct local_symbol *locsym)
   return ret;
 }
 
+static void
+define_sym_at_dot (symbolS *symbolP)
+{
+  symbolP->sy_frag = frag_now;
+#ifdef OBJ_VMS
+  S_SET_OTHER (symbolP, const_flag);
+#endif
+  S_SET_VALUE (symbolP, (valueT) frag_now_fix ());
+  S_SET_SEGMENT (symbolP, now_seg);
+}
+
 /* We have just seen "<name>:".
    Creates a struct symbol unless it already exists.
 
@@ -343,12 +354,7 @@ colon (/* Just seen "x:" - rattle symbols & frags.  */
 	    }
 	  if (S_GET_VALUE (symbolP) == 0)
 	    {
-	      symbolP->sy_frag = frag_now;
-#ifdef OBJ_VMS
-	      S_SET_OTHER (symbolP, const_flag);
-#endif
-	      S_SET_VALUE (symbolP, (valueT) frag_now_fix ());
-	      S_SET_SEGMENT (symbolP, now_seg);
+	      define_sym_at_dot (symbolP);
 #ifdef N_UNDF
 	      know (N_UNDF == 0);
 #endif /* if we have one, it better be zero.  */
@@ -393,12 +399,7 @@ colon (/* Just seen "x:" - rattle symbols & frags.  */
 		    {
 		      /* It is a .comm/.lcomm being converted to initialized
 			 data.  */
-		      symbolP->sy_frag = frag_now;
-#ifdef OBJ_VMS
-		      S_SET_OTHER (symbolP, const_flag);
-#endif
-		      S_SET_VALUE (symbolP, (valueT) frag_now_fix ());
-		      S_SET_SEGMENT (symbolP, now_seg);	/* Keep N_EXT bit.  */
+		      define_sym_at_dot (symbolP);
 		    }
 		}
 	      else
@@ -431,6 +432,7 @@ colon (/* Just seen "x:" - rattle symbols & frags.  */
 	    {
 	      as_bad (_("symbol `%s' is already defined"), sym_name);
 	      symbolP = symbol_clone (symbolP, 0);
+	      define_sym_at_dot (symbolP);
 	    }
 	}
 
-- 
GitLab