]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
bfd ASSOCIATED_VECS
authorAlan Modra <amodra@gmail.com>
Sat, 20 Dec 2025 03:42:31 +0000 (14:12 +1030)
committerAlan Modra <amodra@gmail.com>
Sat, 20 Dec 2025 04:20:53 +0000 (14:50 +1030)
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.

bfd/configure
bfd/configure.ac
bfd/targets.c

index fdabacea4f052025703242d5751584f14a6ec68b..e30030e5e13235dec625859015e415d4bf5b8b8e 100755 (executable)
@@ -15785,11 +15785,11 @@ for targ in $target $canon_targets
 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 @@ for i in $selvecs ; do
 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 @@ if test x${all_targets} = xtrue ; then
   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=
index c36594c5291308df50c1f6384da09e621173c1be..c264cc215af49568261a25a2a0d0af8d73215388 100644 (file)
@@ -326,11 +326,11 @@ for targ in $target $canon_targets
 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 @@ for i in $selvecs ; do
 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 @@ if test x${all_targets} = xtrue ; then
   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=
index 2eac73962ef349f0a97b1537e601f573a85503d7..f6e4c2aa5aa4ce93194910b9f8b7397c641c5433 100644 (file)
@@ -1429,12 +1429,13 @@ const bfd_target *bfd_default_vector[] = {
        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
 };