]> Cypherpunks repositories - gostls13.git/commitdiff
test/run: handle asmcheck -gcflags= commands better
authorRuss Cox <rsc@golang.org>
Tue, 10 Mar 2020 17:45:19 +0000 (13:45 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 11 Mar 2020 16:17:18 +0000 (16:17 +0000)
The default is for later flags to override earlier ones,
so if the asmcheck set flags, it lost the important -S=2.

Change-Id: Id538254908d658da2acb55157ac4f6fa44f6a467
Reviewed-on: https://go-review.googlesource.com/c/go/+/222820
Reviewed-by: Keith Randall <khr@golang.org>
test/run.go

index 76babdfae85ae5c67e54135de0b6ef845ef38d7f..6a52fe1a2280f343e8f3541c28a41afd0155962e 100644 (file)
@@ -667,7 +667,25 @@ func (t *test) run() {
                        }
                        // -S=2 forces outermost line numbers when disassembling inlined code.
                        cmdline := []string{"build", "-gcflags", "-S=2"}
-                       cmdline = append(cmdline, flags...)
+
+                       // Append flags, but don't override -gcflags=-S=2; add to it instead.
+                       for i := 0; i < len(flags); i++ {
+                               flag := flags[i]
+                               switch {
+                               case strings.HasPrefix(flag, "-gcflags="):
+                                       cmdline[2] += " " + strings.TrimPrefix(flag, "-gcflags=")
+                               case strings.HasPrefix(flag, "--gcflags="):
+                                       cmdline[2] += " " + strings.TrimPrefix(flag, "--gcflags=")
+                               case flag == "-gcflags", flag == "--gcflags":
+                                       i++
+                                       if i < len(flags) {
+                                               cmdline[2] += " " + flags[i]
+                                       }
+                               default:
+                                       cmdline = append(cmdline, flag)
+                               }
+                       }
+
                        cmdline = append(cmdline, long)
                        cmd := exec.Command(goTool(), cmdline...)
                        cmd.Env = append(os.Environ(), env.Environ()...)