cmd/go: in cgoflags, permit -DX1, prohibit -Wp,-D,opt

Restrict -D and -U to ASCII C identifiers, but do permit trailing digits.
When using -Wp, prohibit commas in -D values.

Change-Id: Ibfc4dfdd6e6c258e131448e7682610c44eee9492
Reviewed-on: https://go-review.googlesource.com/c/go/+/267277
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
Ian Lance Taylor 2020-11-02 21:31:06 -08:00
parent ecd7b7e991
commit da7aa86917
2 changed files with 9 additions and 4 deletions

View File

@ -42,8 +42,8 @@ import (
var re = lazyregexp.New var re = lazyregexp.New
var validCompilerFlags = []*lazyregexp.Regexp{ var validCompilerFlags = []*lazyregexp.Regexp{
re(`-D([A-Za-z_].*)`), re(`-D([A-Za-z_][A-Za-z0-9_]*)(=[^@\-]*)?`),
re(`-U([A-Za-z_]*)`), re(`-U([A-Za-z_][A-Za-z0-9_]*)`),
re(`-F([^@\-].*)`), re(`-F([^@\-].*)`),
re(`-I([^@\-].*)`), re(`-I([^@\-].*)`),
re(`-O`), re(`-O`),
@ -51,8 +51,8 @@ var validCompilerFlags = []*lazyregexp.Regexp{
re(`-W`), re(`-W`),
re(`-W([^@,]+)`), // -Wall but not -Wa,-foo. re(`-W([^@,]+)`), // -Wall but not -Wa,-foo.
re(`-Wa,-mbig-obj`), re(`-Wa,-mbig-obj`),
re(`-Wp,-D([A-Za-z_].*)`), re(`-Wp,-D([A-Za-z_][A-Za-z0-9_]*)(=[^@,\-]*)?`),
re(`-Wp,-U([A-Za-z_]*)`), re(`-Wp,-U([A-Za-z_][A-Za-z0-9_]*)`),
re(`-ansi`), re(`-ansi`),
re(`-f(no-)?asynchronous-unwind-tables`), re(`-f(no-)?asynchronous-unwind-tables`),
re(`-f(no-)?blocks`), re(`-f(no-)?blocks`),

View File

@ -13,6 +13,7 @@ var goodCompilerFlags = [][]string{
{"-DFOO"}, {"-DFOO"},
{"-Dfoo=bar"}, {"-Dfoo=bar"},
{"-Ufoo"}, {"-Ufoo"},
{"-Ufoo1"},
{"-F/Qt"}, {"-F/Qt"},
{"-I/"}, {"-I/"},
{"-I/etc/passwd"}, {"-I/etc/passwd"},
@ -24,6 +25,8 @@ var goodCompilerFlags = [][]string{
{"-Wall"}, {"-Wall"},
{"-Wp,-Dfoo=bar"}, {"-Wp,-Dfoo=bar"},
{"-Wp,-Ufoo"}, {"-Wp,-Ufoo"},
{"-Wp,-Dfoo1"},
{"-Wp,-Ufoo1"},
{"-fobjc-arc"}, {"-fobjc-arc"},
{"-fno-objc-arc"}, {"-fno-objc-arc"},
{"-fomit-frame-pointer"}, {"-fomit-frame-pointer"},
@ -80,6 +83,8 @@ var badCompilerFlags = [][]string{
{"-O@1"}, {"-O@1"},
{"-Wa,-foo"}, {"-Wa,-foo"},
{"-W@foo"}, {"-W@foo"},
{"-Wp,-DX,-D@X"},
{"-Wp,-UX,-U@X"},
{"-g@gdb"}, {"-g@gdb"},
{"-g-gdb"}, {"-g-gdb"},
{"-march=@dawn"}, {"-march=@dawn"},