[binutils-gdb] MIPS/GAS/testsuite: Support negated targets for default architecture

Maciej W. Rozycki macro@sourceware.org
Sat Feb 15 01:34:56 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c065666dd404668f3e6524a1cc59e240baae98e

commit 1c065666dd404668f3e6524a1cc59e240baae98e
Author: Maciej W. Rozycki <macro@orcam.me.uk>
Date:   Sat Feb 15 01:30:58 2025 +0000

    MIPS/GAS/testsuite: Support negated targets for default architecture
    
    Add support for giving negated targets in the list of targets passed to
    `mips_arch_create' for the purpose of setting the default architecture.
    This is so that a subset of targets can be excluded from matching within
    a broader set of targets.

Diff:
---
 gas/testsuite/gas/mips/mips.exp | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index 4e7a587bfe5..fbd0166f7e8 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -124,11 +124,15 @@ proc mips_arch_init {} {
 # the entry specified by EXTENDS.  (The new architecture is considered
 # to extend the capabilities provided by that architecture.)
 #
-# If DEFAULT_FOR_TARGETS is specified, it is a list of targets for which
-# this architecture is the default architecture.  If "istarget" returns
-# true for any of the targets in the list, a "default" entry will be
-# added to the architecture array which indicates that ARCH is the default
-# architecture.
+# If DEFAULT_FOR_TARGETS is specified, it is a list of targets to match
+# against for the purpose of setting the default architecture.  Entries
+# are examined in turn with any preceding "!" stripped until either all
+# have been processed or "istarget" returns true for a match.  In the
+# case of a match a "default" entry will be added to the architecture
+# array which indicates that ARCH is the default architecture unless
+# the match was for a target preceded by "!".  This lets an early match
+# against a more specific entry preceded by "!" prevent from matching a
+# more general entry placed later in the list.
 proc mips_arch_create {arch gprsize extends props as_flags objdump_flags
 		       {default_for_targets {}}} {
     global mips_arches
@@ -154,6 +158,10 @@ proc mips_arch_create {arch gprsize extends props as_flags objdump_flags
 
     # Set as default if appropriate.
     foreach target $default_for_targets {
+	if { [string match {!*} $target]
+	     && [istarget [string range $target 1 end]] } {
+	    break
+	}
 	if { [istarget $target] } {
 	    if { [info exists mips_arches(default)] } {
 		error "mips_arch_create: default arch already exists"


More information about the Binutils-cvs mailing list