bfd ASSOCIATED_VECS

Tidy code setting ASSOCIATED_VECS, which could be fooled by unusual
configure options such as --enable-targets="srec,all".

	* targets.c (_bfd_associated_vector): Remove comma after
	ASSOCIATED_VECS.
	* configure.ac: Set assocvecs from targ_defvec and
	targ_selvecs when handling the target, rather than assuming
	those variables are still set for the target when handling
	--enable-targets=all.  Move code making assocvecs unique
	later.  Do so in a way that need not run sed afterwards, and
	leave a trailing comma.
	* configure: Regenerate.
diff --git a/bfd/configure b/bfd/configure
index fdabace..e30030e 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -15785,11 +15785,11 @@
 do
     if test $targ = all; then
         all_targets=true
-	assocvecs="$assocvecs $targ_defvec $targ_selvecs"
     elif test $targ != plugin; then
 	. $srcdir/config.bfd
 	if test $targ = $target; then
 	    defvec=$targ_defvec
+	    assocvecs="$targ_defvec $targ_selvecs"
 	fi
 	selvecs="$selvecs $targ_defvec $targ_selvecs"
 	selarchs="$selarchs $targ_archs"
@@ -15815,18 +15815,6 @@
 done
 selvecs="$f"
 
-
-# uniq the associated vectors in all the configured targets.
-f=""
-for i in $assocvecs ; do
-    case " $f " in
-    *" $i "*) ;;
-    *) f="$f $i" ;;
-    esac
-done
-assocvecs="$f"
-
-
 # uniq the architectures in all the configured targets.
 f=""
 for i in $selarchs ; do
@@ -16180,8 +16168,14 @@
   selvecs=
   havevecs=-DHAVE_all_vecs
   selarchs=
-  test -n "$assocvecs" &&
-    assocvecs=`echo $assocvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
+  f=
+  for i in $assocvecs ; do
+    case "&${f}," in
+      *"&${i},"*) ;;
+      *) f="${f}&${i}," ;;
+    esac
+  done
+  assocvecs=$f
 else	# all_targets is true
   # Only set these if they will be nonempty, for the clever echo.
   havevecs=
diff --git a/bfd/configure.ac b/bfd/configure.ac
index c36594c..c264cc2 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -326,11 +326,11 @@
 do
     if test $targ = all; then
         all_targets=true
-	assocvecs="$assocvecs $targ_defvec $targ_selvecs"
     elif test $targ != plugin; then
 	. $srcdir/config.bfd
 	if test $targ = $target; then
 	    defvec=$targ_defvec
+	    assocvecs="$targ_defvec $targ_selvecs"
 	fi
 	selvecs="$selvecs $targ_defvec $targ_selvecs"
 	selarchs="$selarchs $targ_archs"
@@ -356,18 +356,6 @@
 done
 selvecs="$f"
 
-
-# uniq the associated vectors in all the configured targets.
-f=""
-for i in $assocvecs ; do
-    case " $f " in
-    *" $i "*) ;;
-    *) f="$f $i" ;;
-    esac
-done
-assocvecs="$f"
-
-
 # uniq the architectures in all the configured targets.
 f=""
 for i in $selarchs ; do
@@ -721,8 +709,14 @@
   selvecs=
   havevecs=-DHAVE_all_vecs
   selarchs=
-  test -n "$assocvecs" &&
-    assocvecs=`echo $assocvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
+  f=
+  for i in $assocvecs ; do
+    case "&${f}," in
+      *"&${i},"*) ;;
+      *) f="${f}&${i}," ;;
+    esac
+  done
+  assocvecs=$f
 else	# all_targets is true
   # Only set these if they will be nonempty, for the clever echo.
   havevecs=
diff --git a/bfd/targets.c b/bfd/targets.c
index 2eac739..f6e4c2a 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -1429,12 +1429,13 @@
 	NULL
 };
 
-/* bfd_associated_vector[] contains the associated target vectors used
-   to reduce the ambiguity in bfd_check_format_matches.  */
+/* bfd_associated_vector[] contains the main target vectors when
+   configuring with --enable-targets=all, to match those
+   preferentially over others that might match.  */
 
 static const bfd_target *const _bfd_associated_vector[] = {
 #ifdef ASSOCIATED_VECS
-	ASSOCIATED_VECS,
+	ASSOCIATED_VECS
 #endif
 	NULL
 };