From: Russ Cox Date: Tue, 10 Mar 2020 17:45:19 +0000 (-0400) Subject: test/run: handle asmcheck -gcflags= commands better X-Git-Tag: go1.15beta1~897 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=96dc04412d18cc999af21cecb22dea9e7b896360;p=gostls13.git test/run: handle asmcheck -gcflags= commands better 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 --- diff --git a/test/run.go b/test/run.go index 76babdfae8..6a52fe1a22 100644 --- a/test/run.go +++ b/test/run.go @@ -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()...)