From 96dc04412d18cc999af21cecb22dea9e7b896360 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 10 Mar 2020 13:45:19 -0400 Subject: [PATCH] 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 --- test/run.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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()...) -- 2.50.0