diff options
Diffstat (limited to 'libgo/go/cmd/go/internal/work/security.go')
-rw-r--r-- | libgo/go/cmd/go/internal/work/security.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libgo/go/cmd/go/internal/work/security.go b/libgo/go/cmd/go/internal/work/security.go index 0d8da21ae38..0ce1664c16f 100644 --- a/libgo/go/cmd/go/internal/work/security.go +++ b/libgo/go/cmd/go/internal/work/security.go @@ -43,6 +43,7 @@ var re = lazyregexp.New var validCompilerFlags = []*lazyregexp.Regexp{ re(`-D([A-Za-z_].*)`), + re(`-U([A-Za-z_]*)`), re(`-F([^@\-].*)`), re(`-I([^@\-].*)`), re(`-O`), @@ -51,6 +52,7 @@ var validCompilerFlags = []*lazyregexp.Regexp{ re(`-W([^@,]+)`), // -Wall but not -Wa,-foo. re(`-Wa,-mbig-obj`), re(`-Wp,-D([A-Za-z_].*)`), + re(`-Wp,-U([A-Za-z_]*)`), re(`-ansi`), re(`-f(no-)?asynchronous-unwind-tables`), re(`-f(no-)?blocks`), @@ -127,6 +129,7 @@ var validCompilerFlags = []*lazyregexp.Regexp{ var validCompilerFlagsWithNextArg = []string{ "-arch", "-D", + "-U", "-I", "-framework", "-isysroot", @@ -280,6 +283,15 @@ Args: continue Args } + // Permit -I= /path, -I $SYSROOT. + if i+1 < len(list) && arg == "-I" { + if (strings.HasPrefix(list[i+1], "=") || strings.HasPrefix(list[i+1], "$SYSROOT")) && + load.SafeArg(list[i+1][1:]) { + i++ + continue Args + } + } + if i+1 < len(list) { return fmt.Errorf("invalid flag in %s: %s %s (see https://golang.org/s/invalidflag)", source, arg, list[i+1]) } |