]> Cypherpunks repositories - gostls13.git/commitdiff
test: in asmcheck, regexp must match from beginning of line
authorGiovanni Bajo <rasky@develer.com>
Thu, 1 Mar 2018 00:55:33 +0000 (01:55 +0100)
committerGiovanni Bajo <rasky@develer.com>
Thu, 1 Mar 2018 18:14:54 +0000 (18:14 +0000)
This avoid simple bugs like "ADD" matching "FADD". Obviously
"ADD" will still match "ADDQ" so some care is still required
in this regard, but at least a first class of possible errors
is taken care of.

Change-Id: I7deb04c31de30bedac9c026d9889ace4a1d2adcb
Reviewed-on: https://go-review.googlesource.com/97817
Reviewed-by: Giovanni Bajo <rasky@develer.com>
Reviewed-by: Keith Randall <khr@golang.org>
test/run.go

index 271a6f8014836e71665102adf8e4a7be58a90294..8f2ec7e2f954cea384f965e89d9529cc3c8892e4 100644 (file)
@@ -1307,7 +1307,16 @@ func (t *test) wantedAsmOpcodes(fn string) (map[string]map[string][]wantedAsmOpc
                                if err != nil {
                                        log.Fatalf("%s:%d: error unquoting string: %v", t.goFileName(), i+1, err)
                                }
-                               oprx, err := regexp.Compile(rxsrc)
+
+                               // Compile the checks as regular expressions. Notice that we
+                               // consider checks as matching from the beginning of the actual
+                               // assembler source (that is, what is left on each line of the
+                               // compile -S output after we strip file/line info) to avoid
+                               // trivial bugs such as "ADD" matching "FADD". This
+                               // doesn't remove genericity: it's still possible to write
+                               // something like "F?ADD", but we make common cases simpler
+                               // to get right.
+                               oprx, err := regexp.Compile("^" + rxsrc)
                                if err != nil {
                                        log.Fatalf("%s:%d: %v", t.goFileName(), i+1, err)
                                }