diff options
| author | Andrey Konovalov <andreyknvl@google.com> | 2016-11-29 18:40:58 +0100 |
|---|---|---|
| committer | Andrey Konovalov <andreyknvl@google.com> | 2016-11-29 18:53:41 +0100 |
| commit | b13dc4bf5054a9fa2997c212dbc977a4a1c1a8ff (patch) | |
| tree | b291b2268e346382903634153bdfdbdc81508f9d /csource | |
| parent | 684beccb2a70df4884ddc9fa89277e36787be5b5 (diff) | |
csourse: fix emitting syz_* syscalls in c reproducer
Diffstat (limited to 'csource')
| -rw-r--r-- | csource/csource.go | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/csource/csource.go b/csource/csource.go index 42eca2038..5871f35c0 100644 --- a/csource/csource.go +++ b/csource/csource.go @@ -45,7 +45,7 @@ func Write(p *prog.Prog, opts Options) ([]byte, error) { } fmt.Fprintf(w, "\n") - hdr, err := preprocessCommonHeader(opts) + hdr, err := preprocessCommonHeader(opts, handled) if err != nil { return nil, err } @@ -246,7 +246,7 @@ loop: return calls, n } -func preprocessCommonHeader(opts Options) (string, error) { +func preprocessCommonHeader(opts Options, handled map[string]int) (string, error) { cmd := exec.Command("cpp", "-nostdinc", "-undef", "-fdirectives-only", "-dDI", "-E", "-P", "-") switch opts.Sandbox { case "none": @@ -261,6 +261,9 @@ func preprocessCommonHeader(opts Options) (string, error) { if opts.Repeat { cmd.Args = append(cmd.Args, "-DSYZ_REPEAT") } + for name, _ := range handled { + cmd.Args = append(cmd.Args, "-D__NR_" + name) + } cmd.Stdin = strings.NewReader(commonHeader) stderr := new(bytes.Buffer) stdout := new(bytes.Buffer) @@ -271,6 +274,13 @@ func preprocessCommonHeader(opts Options) (string, error) { } 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) + } return out, nil } |
