diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-01-05 12:39:35 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-01-09 20:19:44 +0100 |
| commit | 746f74d25424f04e86e8cdd92c648187d2b8a02c (patch) | |
| tree | 36623b8f68e535ac02af4284b3ee2eec5a045a28 /csource | |
| parent | ec9744f3e5d52372901d95eeff342863bdf2437b (diff) | |
csource: remove more predefined defines from generated source
Diffstat (limited to 'csource')
| -rw-r--r-- | csource/csource.go | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/csource/csource.go b/csource/csource.go index 8f3f99145..517112038 100644 --- a/csource/csource.go +++ b/csource/csource.go @@ -252,22 +252,27 @@ loop: } func preprocessCommonHeader(opts Options, handled map[string]int) (string, error) { - cmd := exec.Command("cpp", "-nostdinc", "-undef", "-fdirectives-only", "-dDI", "-E", "-P", "-") + var defines []string switch opts.Sandbox { case "none": - cmd.Args = append(cmd.Args, "-DSYZ_SANDBOX_NONE") + defines = append(defines, "SYZ_SANDBOX_NONE") case "setuid": - cmd.Args = append(cmd.Args, "-DSYZ_SANDBOX_SETUID") + defines = append(defines, "SYZ_SANDBOX_SETUID") case "namespace": - cmd.Args = append(cmd.Args, "-DSYZ_SANDBOX_NAMESPACE") + defines = append(defines, "SYZ_SANDBOX_NAMESPACE") default: return "", fmt.Errorf("unknown sandbox mode: %v", opts.Sandbox) } if opts.Repeat { - cmd.Args = append(cmd.Args, "-DSYZ_REPEAT") + defines = append(defines, "SYZ_REPEAT") } for name, _ := range handled { - cmd.Args = append(cmd.Args, "-D__NR_"+name) + defines = append(defines, "__NR_"+name) + } + + cmd := exec.Command("cpp", "-nostdinc", "-undef", "-fdirectives-only", "-dDI", "-E", "-P", "-") + for _, def := range defines { + cmd.Args = append(cmd.Args, "-D"+def) } cmd.Stdin = strings.NewReader(commonHeader) stderr := new(bytes.Buffer) @@ -277,14 +282,16 @@ func preprocessCommonHeader(opts Options, handled map[string]int) (string, error if err := cmd.Run(); len(stdout.Bytes()) == 0 { return "", fmt.Errorf("cpp failed: %v\n%v\n%v\n", err, stdout.String(), stderr.String()) } - out := strings.Replace(stdout.String(), "#define __STDC__ 1\n", "", -1) - out = strings.Replace(out, "#define __STDC_HOSTED__ 1\n", "", -1) - for _, arg := range cmd.Args { - if !strings.HasPrefix(arg, "-D") { - continue - } - define := strings.TrimPrefix(arg, "-D") - out = strings.Replace(out, "#define "+define+" 1\n", "", -1) + remove := append(defines, []string{ + "__STDC__", + "__STDC_VERSION__", + "__STDC_HOSTED__", + "__STDC_UTF_16__", + "__STDC_UTF_32__", + }...) + out := stdout.String() + for _, def := range remove { + out = strings.Replace(out, "#define "+def+" 1\n", "", -1) } return out, nil } |
