gas: centralize declaration of listing_tail

Besides it being somewhat off to have three decls scattered across the
code base, it is generally bad practice for the definition of a symbol
to not also observe its declaration (making sure the two won't go out of
sync).
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index ed910b8..822fd3d 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -3260,7 +3260,6 @@
 	 for this symbol.  */
       if (listing & LISTING_SYMBOLS)
 	{
-	  extern struct list_info_struct * listing_tail;
 	  fragS * dummy_frag = (fragS * ) xmalloc (sizeof (fragS));
 
 	  memset (dummy_frag, 0, sizeof (fragS));
diff --git a/gas/frags.c b/gas/frags.c
index d067bb4..6684e27 100644
--- a/gas/frags.c
+++ b/gas/frags.c
@@ -192,10 +192,7 @@
   frchP->frch_last = frag_now;
 
 #ifndef NO_LISTING
-  {
-    extern struct list_info_struct *listing_tail;
-    frag_now->line = listing_tail;
-  }
+  frag_now->line = listing_tail;
 #endif
 
   gas_assert (frchain_now->frch_last == frag_now);
diff --git a/gas/listing.h b/gas/listing.h
index 791d584..cd49498 100644
--- a/gas/listing.h
+++ b/gas/listing.h
@@ -62,6 +62,8 @@
 extern int listing_lhs_cont_lines;
 extern int listing_rhs_width;
 
+extern struct list_info_struct *listing_tail;
+
 #endif /* __listing_h__ */
 
 /* end of listing.h */
diff --git a/gas/read.c b/gas/read.c
index 2acb4e0..171182d 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -3270,7 +3270,6 @@
 	 for this symbol.  */
       if (listing & LISTING_SYMBOLS)
 	{
-	  extern struct list_info_struct *listing_tail;
 	  fragS *dummy_frag = notes_calloc (1, sizeof (*dummy_frag));
 	  dummy_frag->line = listing_tail;
 	  dummy_frag->fr_symbol = symbolP;