#!/usr/bin/awk -f

#===-- generate_netbsd_syscalls.awk ----------------------------------------===#
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===------------------------------------------------------------------------===#
#
# This file is a generator of:
#  - include/sanitizer/netbsd_syscall_hooks.h
#  - lib/sanitizer_common/sanitizer_syscalls_netbsd.inc
#
# This script accepts on the input syscalls.master by default located in the
# /usr/src/sys/kern/syscalls.master path in the NetBSD distribution.
#
# This script shall be executed only on the newest NetBSD version.
# This script will emit compat code for the older releases.
#
# NetBSD minimal version supported 9.0.
# NetBSD current version supported 9.99.30.
#
#===------------------------------------------------------------------------===#

BEGIN {
  # harcode the script name
  script_name = "generate_netbsd_syscalls.awk"
  outputh = "../include/sanitizer/netbsd_syscall_hooks.h"
  outputinc = "../lib/sanitizer_common/sanitizer_syscalls_netbsd.inc"

  # assert that we are in the directory with scripts
  in_utils = system("test -f " script_name " && exit 1 || exit 0")
  if (in_utils == 0) {
    usage()
  }

  # assert 1 argument passed
  if (ARGC != 2) {
    usage()
  }

  # assert argument is a valid file path to syscall.master
  if (system("test -f " ARGV[1]) != 0) {
    usage()
  }

  # sanity check that the path ends with "syscall.master"
  if (ARGV[1] !~ /syscalls\.master$/) {
    usage()
  }

  # accept overloading CLANGFORMAT from environment
  clangformat = "clang-format"
  if ("CLANGFORMAT" in ENVIRON) {
    clangformat = ENVIRON["CLANGFORMAT"]
  }

  # parsing specific symbols
  parsingheader=1

  parsedsyscalls=0

  # Hardcoded in algorithm
  SYS_MAXSYSARGS=8
}

# Parse the RCS ID from syscall.master
parsingheader == 1 && NR == 1 {
  if (match($0, /\$[^$]+\$/)) {
    # trim initial 'NetBSD: ' and trailing ' $'
    syscallmasterversion = substr($0, RSTART + 9, RLENGTH - 11)
  } else {
    # wrong file?
    usage()
  }
}

# skip the following lines
#  - empty
NF == 0 {
  next
}
#  - comment
$1 == ";" {
  next
}

# separator between the header and table with syscalls
$0 == "%%" {
  parsingheader = 0
  next
}

# preserve 'if/elif/else/endif' C preprocessor as-is
parsingheader == 0 && $0 ~ /^#/ {
  if (parsedsyscalls in ifelifelseendif) {
    ifelifelseendif[parsedsyscalls] = ifelifelseendif[parsedsyscalls] "\n" $0
  } else {
    ifelifelseendif[parsedsyscalls] = $0
  }
  next
}

# parsing of syscall definitions
parsingheader == 0 && $1 ~ /^[0-9]+$/ {
  # first join multiple lines into single one
  while (sub(/\\$/, "")) {
    getline line
    $0 = $0 "" line
  }

  # Skip unwanted syscalls
  skip=0
  if ($0 ~ /OBSOL/ || $0 ~ /EXCL/ || $0 ~ /UNIMPL/) {
    skip=1
  }

  # Compose the syscall name
  #  - compat?
  compat=""
  if (match($0, /COMPAT_[0-9]+/)) {
    compat = tolower(substr($0, RSTART, RLENGTH))
  }
  # - alias name?
  alias=""
  if ($(NF) != "}" && !skip) {
    alias = alias "" $(NF)
  }
  # - compat version?
  compatver=""
  if (match($0, /\|[0-9]+\|/)) {
    compatver = tolower(substr($0, RSTART + 1, RLENGTH - 2))
  }
  # - basename?
  basename=""
  if (skip) {
    basename = $1
  } else {
    if (match($0, /\|[_a-z0-9]+\(/)) {
      basename = tolower(substr($0, RSTART + 1, RLENGTH - 2))
    }
  }

  syscallname=""

  if (skip) {
    syscallname= syscallname "$"
  }

  if (length(compat) > 0) {
    syscallname = syscallname "" compat "_"
  }
  if (length(alias) > 0) {
    syscallname = syscallname "" alias
  } else {
    if (length(compatver) > 0) {
      syscallname = syscallname "__" basename "" compatver
    } else {
      syscallname = syscallname "" basename
    }
  }

  # Store the syscallname
  syscalls[parsedsyscalls]=syscallname

  # Extract syscall arguments
  if (match($0, /\([^)]+\)/)) {
    args = substr($0, RSTART + 1, RLENGTH - 2)

    if (args == "void") {
      syscallargs[parsedsyscalls] = "void"
      syscallfullargs[parsedsyscalls] = "void"
    } else {
      # Normalize 'type * argument' to 'type *argument'
      gsub("\\*[ \t]+", "*", args)

      n = split(args, a, ",")

      # Handle the first argument
      match(a[1], /[*_a-z0-9\[\]]+$/)
      syscallfullargs[parsedsyscalls] = substr(a[1], RSTART) "_"

      gsub(".+[ *]", "", a[1])
      syscallargs[parsedsyscalls] = a[1]

      # Handle the rest of arguments
      for (i = 2; i <= n; i++) {
        match(a[i], /[*_a-zA-Z0-9\[\]]+$/)
        fs = substr(a[i], RSTART)
        if (fs ~ /\[/) {
          sub(/\[/, "_[", fs)
        } else {
          fs = fs "_"
        }
        syscallfullargs[parsedsyscalls] = syscallfullargs[parsedsyscalls] "$" fs
	gsub(".+[ *]", "", a[i])
        syscallargs[parsedsyscalls] = syscallargs[parsedsyscalls] "$" a[i]
      }

      # Handle array arguments for syscall(2) and __syscall(2)
      nargs = "arg0$arg1$arg2$arg3$arg4$arg5$arg6$arg7"
      gsub(/args\[SYS_MAXSYSARGS\]/, nargs, syscallargs[parsedsyscalls])
    }
  }

  parsedsyscalls++

  # Done with this line
  next
}


END {
  # empty file?
  if (NR < 1 && !abnormal_exit) {
    usage()
  }

  # Handle abnormal exit
  if (abnormal_exit) {
    exit(abnormal_exit)
  }

  # Generate sanitizer_syscalls_netbsd.inc

  # open pipe
  cmd = clangformat " > " outputh

  pcmd("//===-- netbsd_syscall_hooks.h --------------------------------------------===//")
  pcmd("//")
  pcmd("// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.")
  pcmd("// See https://llvm.org/LICENSE.txt for license information.")
  pcmd("// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception")
  pcmd("//")
  pcmd("//===----------------------------------------------------------------------===//")
  pcmd("//")
  pcmd("// This file is a part of public sanitizer interface.")
  pcmd("//")
  pcmd("// System call handlers.")
  pcmd("//")
  pcmd("// Interface methods declared in this header implement pre- and post- syscall")
  pcmd("// actions for the active sanitizer.")
  pcmd("// Usage:")
  pcmd("//   __sanitizer_syscall_pre_getfoo(...args...);")
  pcmd("//   long long res = syscall(SYS_getfoo, ...args...);")
  pcmd("//   __sanitizer_syscall_post_getfoo(res, ...args...);")
  pcmd("//")
  pcmd("// DO NOT EDIT! THIS FILE HAS BEEN GENERATED!")
  pcmd("//")
  pcmd("// Generated with: " script_name)
  pcmd("// Generated date: " strftime("%F"))
  pcmd("// Generated from: " syscallmasterversion)
  pcmd("//")
  pcmd("//===----------------------------------------------------------------------===//")
  pcmd("#ifndef SANITIZER_NETBSD_SYSCALL_HOOKS_H")
  pcmd("#define SANITIZER_NETBSD_SYSCALL_HOOKS_H")
  pcmd("")

  for (i = 0; i < parsedsyscalls; i++) {

    if (i in ifelifelseendif) {
      pcmd(ifelifelseendif[i])
    }

    sn = syscalls[i]

    if (sn ~ /^\$/) {
      pcmd("/* syscall " substr(sn,2) " has been skipped */")
      continue
    }

    inargs = ""

    if (syscallargs[i] != "void") {
      inargs = syscallargs[i]
      gsub(/\$/, ", ", inargs)
    }

    outargs = ""

    if (syscallargs[i] != "void") {
      outargs = "(long long)(" syscallargs[i] ")"
      gsub(/\$/, "), (long long)(", outargs)
    }

    pcmd("#define __sanitizer_syscall_pre_" sn "(" inargs ") \\")
    pcmd("  __sanitizer_syscall_pre_impl_" sn "(" outargs ")")

    if (inargs == "") {
      inargs = "res"
    } else {
      inargs = "res, " inargs
    }

    if (outargs == "") {
      outargs = "res"
    } else {
      outargs = "res, " outargs
    }

    pcmd("#define __sanitizer_syscall_post_" sn "(" inargs ") \\")
    pcmd("  __sanitizer_syscall_post_impl_" sn "(" outargs ")")
  }

  pcmd("")
  pcmd("/* Compat with older releases */")
  pcmd("#define __sanitizer_syscall_pre_getvfsstat __sanitizer_syscall_pre_compat_90_getvfsstat")
  pcmd("#define __sanitizer_syscall_post_getvfsstat __sanitizer_syscall_post_compat_90_getvfsstat")
  pcmd("")
  pcmd("#define __sanitizer_syscall_pre_statvfs1 __sanitizer_syscall_pre_compat_90_statvfs1")
  pcmd("#define __sanitizer_syscall_post_statvfs1 __sanitizer_syscall_post_compat_90_statvfs1")
  pcmd("")
  pcmd("#define __sanitizer_syscall_pre_fstatvfs1 __sanitizer_syscall_pre_compat_90_fstatvfs1")
  pcmd("#define __sanitizer_syscall_post_fstatvfs1 __sanitizer_syscall_post_compat_90_fstatvfs1")
  pcmd("")
  pcmd("#define __sanitizer_syscall_pre___fhstatvfs140 __sanitizer_syscall_pre_compat_90_fhstatvfs1")
  pcmd("#define __sanitizer_syscall_post___fhstatvfs140 __sanitizer_syscall_post_compat_90_fhstatvfs1")

  pcmd("")
  pcmd("#ifdef __cplusplus")
  pcmd("extern \"C\" {")
  pcmd("#endif")
  pcmd("")
  pcmd("// Private declarations. Do not call directly from user code. Use macros above.")
  pcmd("")
  pcmd("// DO NOT EDIT! THIS FILE HAS BEEN GENERATED!")
  pcmd("")

  for (i = 0; i < parsedsyscalls; i++) {

    if (i in ifelifelseendif) {
      pcmd(ifelifelseendif[i])
    }

    sn = syscalls[i]

    if (sn ~ /^\$/) {
      pcmd("/* syscall " substr(sn,2) " has been skipped */")
      continue
    }

    preargs = syscallargs[i]

    if (preargs != "void") {
      preargs = "long long " preargs
      gsub(/\$/, ", long long ", preargs)
    }

    if (preargs == "void") {
      postargs = "long long res"
    } else {
      postargs = "long long res, " preargs
    }

    pcmd("void __sanitizer_syscall_pre_impl_" sn "(" preargs ");")
    pcmd("void __sanitizer_syscall_post_impl_" sn "(" postargs ");")
  }

  pcmd("")
  pcmd("#ifdef __cplusplus")
  pcmd("} // extern \"C\"")
  pcmd("#endif")

  pcmd("")
  pcmd("// DO NOT EDIT! THIS FILE HAS BEEN GENERATED!")
  pcmd("")

  pcmd("#endif  // SANITIZER_NETBSD_SYSCALL_HOOKS_H")

  close(cmd)

  # Generate sanitizer_syscalls_netbsd.inc

  # open pipe
  cmd = clangformat " > " outputinc

  pcmd("//===-- sanitizer_syscalls_netbsd.inc ---------------------------*- C++ -*-===//")
  pcmd("//")
  pcmd("// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.")
  pcmd("// See https://llvm.org/LICENSE.txt for license information.")
  pcmd("// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception")
  pcmd("//")
  pcmd("//===----------------------------------------------------------------------===//")
  pcmd("//")
  pcmd("// Common syscalls handlers for tools like AddressSanitizer,")
  pcmd("// ThreadSanitizer, MemorySanitizer, etc.")
  pcmd("//")
  pcmd("// This file should be included into the tool's interceptor file,")
  pcmd("// which has to define it's own macros:")
  pcmd("//   COMMON_SYSCALL_PRE_READ_RANGE")
  pcmd("//          Called in prehook for regions that will be read by the kernel and")
  pcmd("//          must be initialized.")
  pcmd("//   COMMON_SYSCALL_PRE_WRITE_RANGE")
  pcmd("//          Called in prehook for regions that will be written to by the kernel")
  pcmd("//          and must be addressable. The actual write range may be smaller than")
  pcmd("//          reported in the prehook. See POST_WRITE_RANGE.")
  pcmd("//   COMMON_SYSCALL_POST_READ_RANGE")
  pcmd("//          Called in posthook for regions that were read by the kernel. Does")
  pcmd("//          not make much sense.")
  pcmd("//   COMMON_SYSCALL_POST_WRITE_RANGE")
  pcmd("//          Called in posthook for regions that were written to by the kernel")
  pcmd("//          and are now initialized.")
  pcmd("//   COMMON_SYSCALL_ACQUIRE(addr)")
  pcmd("//          Acquire memory visibility from addr.")
  pcmd("//   COMMON_SYSCALL_RELEASE(addr)")
  pcmd("//          Release memory visibility to addr.")
  pcmd("//   COMMON_SYSCALL_FD_CLOSE(fd)")
  pcmd("//          Called before closing file descriptor fd.")
  pcmd("//   COMMON_SYSCALL_FD_ACQUIRE(fd)")
  pcmd("//          Acquire memory visibility from fd.")
  pcmd("//   COMMON_SYSCALL_FD_RELEASE(fd)")
  pcmd("//          Release memory visibility to fd.")
  pcmd("//   COMMON_SYSCALL_PRE_FORK()")
  pcmd("//          Called before fork syscall.")
  pcmd("//   COMMON_SYSCALL_POST_FORK(long long res)")
  pcmd("//          Called after fork syscall.")
  pcmd("//")
  pcmd("// DO NOT EDIT! THIS FILE HAS BEEN GENERATED!")
  pcmd("//")
  pcmd("// Generated with: " script_name)
  pcmd("// Generated date: " strftime("%F"))
  pcmd("// Generated from: " syscallmasterversion)
  pcmd("//")
  pcmd("//===----------------------------------------------------------------------===//")
  pcmd("")
  pcmd("#include \"sanitizer_platform.h\"")
  pcmd("#if SANITIZER_NETBSD")
  pcmd("")
  pcmd("#include \"sanitizer_libc.h\"")
  pcmd("")
  pcmd("#define PRE_SYSCALL(name)                                                      \\")
  pcmd("  SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_syscall_pre_impl_##name")
  pcmd("#define PRE_READ(p, s) COMMON_SYSCALL_PRE_READ_RANGE(p, s)")
  pcmd("#define PRE_WRITE(p, s) COMMON_SYSCALL_PRE_WRITE_RANGE(p, s)")
  pcmd("")
  pcmd("#define POST_SYSCALL(name)                                                     \\")
  pcmd("  SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_syscall_post_impl_##name")
  pcmd("#define POST_READ(p, s) COMMON_SYSCALL_POST_READ_RANGE(p, s)")
  pcmd("#define POST_WRITE(p, s) COMMON_SYSCALL_POST_WRITE_RANGE(p, s)")
  pcmd("")
  pcmd("#ifndef COMMON_SYSCALL_ACQUIRE")
  pcmd("# define COMMON_SYSCALL_ACQUIRE(addr) ((void)(addr))")
  pcmd("#endif")
  pcmd("")
  pcmd("#ifndef COMMON_SYSCALL_RELEASE")
  pcmd("# define COMMON_SYSCALL_RELEASE(addr) ((void)(addr))")
  pcmd("#endif")
  pcmd("")
  pcmd("#ifndef COMMON_SYSCALL_FD_CLOSE")
  pcmd("# define COMMON_SYSCALL_FD_CLOSE(fd) ((void)(fd))")
  pcmd("#endif")
  pcmd("")
  pcmd("#ifndef COMMON_SYSCALL_FD_ACQUIRE")
  pcmd("# define COMMON_SYSCALL_FD_ACQUIRE(fd) ((void)(fd))")
  pcmd("#endif")
  pcmd("")
  pcmd("#ifndef COMMON_SYSCALL_FD_RELEASE")
  pcmd("# define COMMON_SYSCALL_FD_RELEASE(fd) ((void)(fd))")
  pcmd("#endif")
  pcmd("")
  pcmd("#ifndef COMMON_SYSCALL_PRE_FORK")
  pcmd("# define COMMON_SYSCALL_PRE_FORK() {}")
  pcmd("#endif")
  pcmd("")
  pcmd("#ifndef COMMON_SYSCALL_POST_FORK")
  pcmd("# define COMMON_SYSCALL_POST_FORK(res) {}")
  pcmd("#endif")
  pcmd("")
  pcmd("// FIXME: do some kind of PRE_READ for all syscall arguments (int(s) and such).")
  pcmd("")
  pcmd("extern \"C\" {")
  pcmd("#define SYS_MAXSYSARGS " SYS_MAXSYSARGS)

  for (i = 0; i < parsedsyscalls; i++) {

    if (i in ifelifelseendif) {
      pcmd(ifelifelseendif[i])
    }

    sn = syscalls[i]

    if (sn ~ /^\$/) {
      pcmd("/* syscall " substr(sn,2) " has been skipped */")
      continue
    }

    preargs = syscallfullargs[i]

    if (preargs != "void") {
      preargs = "long long " preargs
      gsub(/\$/, ", long long ", preargs)
      gsub(/long long \*/, "void *", preargs)
    }

    if (preargs == "void") {
      postargs = "long long res"
    } else {
      postargs = "long long res, " preargs
    }

    pcmd("PRE_SYSCALL(" sn ")(" preargs ")")
    pcmd("{")
    syscall_body(sn, "pre")
    pcmd("}")

    pcmd("POST_SYSCALL(" sn ")(" postargs ")")
    pcmd("{")
    syscall_body(sn, "post")
    pcmd("}")
  }

  pcmd("#undef SYS_MAXSYSARGS")
  pcmd("}  // extern \"C\"")
  pcmd("")
  pcmd("#undef PRE_SYSCALL")
  pcmd("#undef PRE_READ")
  pcmd("#undef PRE_WRITE")
  pcmd("#undef POST_SYSCALL")
  pcmd("#undef POST_READ")
  pcmd("#undef POST_WRITE")
  pcmd("")
  pcmd("#endif  // SANITIZER_NETBSD")

  close(cmd)

  # Hack for preprocessed code
  system("sed -i 's,^ \\([^ ]\\),  \\1,' " outputinc)
}

function usage()
{
  print "Usage: " script_name " syscalls.master"
  abnormal_exit = 1
  exit 1
}

function pcmd(string)
{
  print string | cmd
}

function syscall_body(syscall, mode)
{
  # Hardcode sanitizing rules here
  # These syscalls don't change often so they are hand coded
  if (syscall == "syscall") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "exit") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "fork") {
    if (mode == "pre") {
      pcmd("COMMON_SYSCALL_PRE_FORK();")
    } else {
      pcmd("COMMON_SYSCALL_POST_FORK(res);")
    }
  } else if (syscall == "read") {
    if (mode == "pre") {
      pcmd("if (buf_) {")
      pcmd("  PRE_WRITE(buf_, nbyte_);")
      pcmd("}")
    } else {
      pcmd("if (res > 0) {")
      pcmd("  POST_WRITE(buf_, res);")
      pcmd("}")
    }
  } else if (syscall == "write") {
    if (mode == "pre") {
      pcmd("if (buf_) {")
      pcmd("  PRE_READ(buf_, nbyte_);")
      pcmd("}")
    } else {
      pcmd("if (res > 0) {")
      pcmd("  POST_READ(buf_, res);")
      pcmd("}")
    }
  } else if (syscall == "open") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res > 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "close") {
    if (mode == "pre") {
      pcmd("COMMON_SYSCALL_FD_CLOSE((int)fd_);")
    } else {
      pcmd("/* Nothing to do */")
    }
  } else if (syscall == "compat_50_wait4") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_ocreat") {
    pcmd("/* TODO */")
  } else if (syscall == "link") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("const char *link = (const char *)link_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (link) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(link) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  const char *link = (const char *)link_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("  if (link) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(link) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "unlink") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "chdir") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "fchdir") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50_mknod") {
    pcmd("/* TODO */")
  } else if (syscall == "chmod") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "chown") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "break") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_20_getfsstat") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_olseek") {
    pcmd("/* TODO */")
  } else if (syscall == "getpid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_40_mount") {
    pcmd("/* TODO */")
  } else if (syscall == "unmount") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "setuid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "getuid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "geteuid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "ptrace") {
    if (mode == "pre") {
      pcmd("if (req_ == ptrace_pt_io) {")
      pcmd("  struct __sanitizer_ptrace_io_desc *addr = (struct __sanitizer_ptrace_io_desc *)addr_;")
      pcmd("  PRE_READ(addr, struct_ptrace_ptrace_io_desc_struct_sz);")
      pcmd("  if (addr->piod_op == ptrace_piod_write_d || addr->piod_op == ptrace_piod_write_i) {")
      pcmd("    PRE_READ(addr->piod_addr, addr->piod_len);")
      pcmd("  }")
      pcmd("  if (addr->piod_op == ptrace_piod_read_d || addr->piod_op == ptrace_piod_read_i || addr->piod_op == ptrace_piod_read_auxv) {")
      pcmd("    PRE_WRITE(addr->piod_addr, addr->piod_len);")
      pcmd("  }")
      pcmd("} else if (req_ == ptrace_pt_lwpinfo) {")
      pcmd("  struct __sanitizer_ptrace_lwpinfo *addr = (struct __sanitizer_ptrace_lwpinfo *)addr_;")
      pcmd("  PRE_READ(&addr->pl_lwpid, sizeof(__sanitizer_lwpid_t));")
      pcmd("  PRE_WRITE(addr, struct_ptrace_ptrace_lwpinfo_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_set_event_mask) {")
      pcmd("  PRE_READ(addr_, struct_ptrace_ptrace_event_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_get_event_mask) {")
      pcmd("  PRE_WRITE(addr_, struct_ptrace_ptrace_event_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_set_siginfo) {")
      pcmd("  PRE_READ(addr_, struct_ptrace_ptrace_siginfo_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_get_siginfo) {")
      pcmd("  PRE_WRITE(addr_, struct_ptrace_ptrace_siginfo_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_lwpstatus) {")
      pcmd("  struct __sanitizer_ptrace_lwpstatus *addr = (struct __sanitizer_ptrace_lwpstatus *)addr_;")
      pcmd("  PRE_READ(&addr->pl_lwpid, sizeof(__sanitizer_lwpid_t));")
      pcmd("  PRE_WRITE(addr, struct_ptrace_ptrace_lwpstatus_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_lwpnext) {")
      pcmd("  struct __sanitizer_ptrace_lwpstatus *addr = (struct __sanitizer_ptrace_lwpstatus *)addr_;")
      pcmd("  PRE_READ(&addr->pl_lwpid, sizeof(__sanitizer_lwpid_t));")
      pcmd("  PRE_WRITE(addr, struct_ptrace_ptrace_lwpstatus_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_setregs) {")
      pcmd("  PRE_READ(addr_, struct_ptrace_reg_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_getregs) {")
      pcmd("  PRE_WRITE(addr_, struct_ptrace_reg_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_setfpregs) {")
      pcmd("  PRE_READ(addr_, struct_ptrace_fpreg_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_getfpregs) {")
      pcmd("  PRE_WRITE(addr_, struct_ptrace_fpreg_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_setdbregs) {")
      pcmd("  PRE_READ(addr_, struct_ptrace_dbreg_struct_sz);")
      pcmd("} else if (req_ == ptrace_pt_getdbregs) {")
      pcmd("  PRE_WRITE(addr_, struct_ptrace_dbreg_struct_sz);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  if (req_ == ptrace_pt_io) {")
      pcmd("    struct __sanitizer_ptrace_io_desc *addr = (struct __sanitizer_ptrace_io_desc *)addr_;")
      pcmd("    POST_READ(addr, struct_ptrace_ptrace_io_desc_struct_sz);")
      pcmd("    if (addr->piod_op == ptrace_piod_write_d || addr->piod_op == ptrace_piod_write_i) {")
      pcmd("      POST_READ(addr->piod_addr, addr->piod_len);")
      pcmd("    }")
      pcmd("    if (addr->piod_op == ptrace_piod_read_d || addr->piod_op == ptrace_piod_read_i || addr->piod_op == ptrace_piod_read_auxv) {")
      pcmd("      POST_WRITE(addr->piod_addr, addr->piod_len);")
      pcmd("    }")
      pcmd("  } else if (req_ == ptrace_pt_lwpinfo) {")
      pcmd("    struct __sanitizer_ptrace_lwpinfo *addr = (struct __sanitizer_ptrace_lwpinfo *)addr_;")
      pcmd("    POST_READ(&addr->pl_lwpid, sizeof(__sanitizer_lwpid_t));")
      pcmd("    POST_WRITE(addr, struct_ptrace_ptrace_lwpinfo_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_set_event_mask) {")
      pcmd("    POST_READ(addr_, struct_ptrace_ptrace_event_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_get_event_mask) {")
      pcmd("    POST_WRITE(addr_, struct_ptrace_ptrace_event_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_set_siginfo) {")
      pcmd("    POST_READ(addr_, struct_ptrace_ptrace_siginfo_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_get_siginfo) {")
      pcmd("    POST_WRITE(addr_, struct_ptrace_ptrace_siginfo_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_lwpstatus) {")
      pcmd("    struct __sanitizer_ptrace_lwpstatus *addr = (struct __sanitizer_ptrace_lwpstatus *)addr_;")
      pcmd("    POST_READ(&addr->pl_lwpid, sizeof(__sanitizer_lwpid_t));")
      pcmd("    POST_WRITE(addr, struct_ptrace_ptrace_lwpstatus_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_lwpnext) {")
      pcmd("    struct __sanitizer_ptrace_lwpstatus *addr = (struct __sanitizer_ptrace_lwpstatus *)addr_;")
      pcmd("    POST_READ(&addr->pl_lwpid, sizeof(__sanitizer_lwpid_t));")
      pcmd("    POST_WRITE(addr, struct_ptrace_ptrace_lwpstatus_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_setregs) {")
      pcmd("    POST_READ(addr_, struct_ptrace_reg_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_getregs) {")
      pcmd("    POST_WRITE(addr_, struct_ptrace_reg_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_setfpregs) {")
      pcmd("    POST_READ(addr_, struct_ptrace_fpreg_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_getfpregs) {")
      pcmd("    POST_WRITE(addr_, struct_ptrace_fpreg_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_setdbregs) {")
      pcmd("    POST_READ(addr_, struct_ptrace_dbreg_struct_sz);")
      pcmd("  } else if (req_ == ptrace_pt_getdbregs) {")
      pcmd("    POST_WRITE(addr_, struct_ptrace_dbreg_struct_sz);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "recvmsg") {
    if (mode == "pre") {
      pcmd("PRE_WRITE(msg_, sizeof(__sanitizer_msghdr));")
    } else {
      pcmd("if (res > 0) {")
      pcmd("  POST_WRITE(msg_, sizeof(__sanitizer_msghdr));")
      pcmd("}")
    }
  } else if (syscall == "sendmsg") {
    if (mode == "pre") {
      pcmd("PRE_READ(msg_, sizeof(__sanitizer_msghdr));")
    } else {
      pcmd("if (res > 0) {")
      pcmd("  POST_READ(msg_, sizeof(__sanitizer_msghdr));")
      pcmd("}")
    }
  } else if (syscall == "recvfrom") {
    if (mode == "pre") {
      pcmd("PRE_WRITE(buf_, len_);")
      pcmd("PRE_WRITE(from_, struct_sockaddr_sz);")
      pcmd("PRE_WRITE(fromlenaddr_, sizeof(__sanitizer_socklen_t));")
    } else {
      pcmd("if (res >= 0) {")
      pcmd("  POST_WRITE(buf_, res);")
      pcmd("  POST_WRITE(from_, struct_sockaddr_sz);")
      pcmd("  POST_WRITE(fromlenaddr_, sizeof(__sanitizer_socklen_t));")
      pcmd("}")
    }
  } else if (syscall == "accept") {
    if (mode == "pre") {
      pcmd("PRE_WRITE(name_, struct_sockaddr_sz);")
      pcmd("PRE_WRITE(anamelen_, sizeof(__sanitizer_socklen_t));")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  POST_WRITE(name_, struct_sockaddr_sz);")
      pcmd("  POST_WRITE(anamelen_, sizeof(__sanitizer_socklen_t));")
      pcmd("}")
    }
  } else if (syscall == "getpeername") {
    if (mode == "pre") {
      pcmd("PRE_WRITE(asa_, struct_sockaddr_sz);")
      pcmd("PRE_WRITE(alen_, sizeof(__sanitizer_socklen_t));")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  POST_WRITE(asa_, struct_sockaddr_sz);")
      pcmd("  POST_WRITE(alen_, sizeof(__sanitizer_socklen_t));")
      pcmd("}")
    }
  } else if (syscall == "getsockname") {
    if (mode == "pre") {
      pcmd("PRE_WRITE(asa_, struct_sockaddr_sz);")
      pcmd("PRE_WRITE(alen_, sizeof(__sanitizer_socklen_t));")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  POST_WRITE(asa_, struct_sockaddr_sz);")
      pcmd("  POST_WRITE(alen_, sizeof(__sanitizer_socklen_t));")
      pcmd("}")
    }
  } else if (syscall == "access") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "chflags") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "fchflags") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "sync") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "kill") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_43_stat43") {
    pcmd("/* TODO */")
  } else if (syscall == "getppid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_43_lstat43") {
    pcmd("/* TODO */")
  } else if (syscall == "dup") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "pipe") {
    pcmd("/* pipe returns two descriptors through two returned values */")
  } else if (syscall == "getegid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "profil") {
    if (mode == "pre") {
      pcmd("if (samples_) {")
      pcmd("  PRE_WRITE(samples_, size_);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  if (samples_) {")
      pcmd("    POST_WRITE(samples_, size_);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "ktrace") {
    if (mode == "pre") {
      pcmd("const char *fname = (const char *)fname_;")
      pcmd("if (fname) {")
      pcmd("  PRE_READ(fname, __sanitizer::internal_strlen(fname) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *fname = (const char *)fname_;")
      pcmd("if (res == 0) {")
      pcmd("  if (fname) {")
      pcmd("    POST_READ(fname, __sanitizer::internal_strlen(fname) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "compat_13_sigaction13") {
    pcmd("/* TODO */")
  } else if (syscall == "getgid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_13_sigprocmask13") {
    pcmd("/* TODO */")
  } else if (syscall == "__getlogin") {
    if (mode == "pre") {
      pcmd("if (namebuf_) {")
      pcmd("  PRE_WRITE(namebuf_, namelen_);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  if (namebuf_) {")
      pcmd("    POST_WRITE(namebuf_, namelen_);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "__setlogin") {
    if (mode == "pre") {
      pcmd("const char *namebuf = (const char *)namebuf_;")
      pcmd("if (namebuf) {")
      pcmd("  PRE_READ(namebuf, __sanitizer::internal_strlen(namebuf) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *namebuf = (const char *)namebuf_;")
      pcmd("  if (namebuf) {")
      pcmd("    POST_READ(namebuf, __sanitizer::internal_strlen(namebuf) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "acct") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "compat_13_sigpending13") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_13_sigaltstack13") {
    pcmd("/* TODO */")
  } else if (syscall == "ioctl") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_12_oreboot") {
    pcmd("/* TODO */")
  } else if (syscall == "revoke") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "symlink") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("const char *link = (const char *)link_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (link) {")
      pcmd("  PRE_READ(link, __sanitizer::internal_strlen(link) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  const char *link = (const char *)link_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("  if (link) {")
      pcmd("    POST_READ(link, __sanitizer::internal_strlen(link) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "readlink") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (buf_) {")
      pcmd("  PRE_WRITE(buf_, count_);")
      pcmd("}")
    } else {
      pcmd("if (res > 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("  if (buf_) {")
      pcmd("    PRE_WRITE(buf_, res);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "execve") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("char **argp = (char **)argp_;")
      pcmd("char **envp = (char **)envp_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (argp && argp[0]) {")
      pcmd("  char *a = argp[0];")
      pcmd("  while (a++) {")
      pcmd("    PRE_READ(a, __sanitizer::internal_strlen(a) + 1);")
      pcmd("  }")
      pcmd("}")
      pcmd("if (envp && envp[0]) {")
      pcmd("  char *e = envp[0];")
      pcmd("  while (e++) {")
      pcmd("    PRE_READ(e, __sanitizer::internal_strlen(e) + 1);")
      pcmd("  }")
      pcmd("}")
    } else {
      pcmd("/* If we are here, something went wrong */")
      pcmd("const char *path = (const char *)path_;")
      pcmd("char **argp = (char **)argp_;")
      pcmd("char **envp = (char **)envp_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (argp && argp[0]) {")
      pcmd("  char *a = argp[0];")
      pcmd("  while (a++) {")
      pcmd("    POST_READ(a, __sanitizer::internal_strlen(a) + 1);")
      pcmd("  }")
      pcmd("}")
      pcmd("if (envp && envp[0]) {")
      pcmd("  char *e = envp[0];")
      pcmd("  while (e++) {")
      pcmd("    POST_READ(e, __sanitizer::internal_strlen(e) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "umask") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "chroot") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "compat_43_fstat43") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_ogetkerninfo") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_ogetpagesize") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_12_msync") {
    pcmd("/* TODO */")
  } else if (syscall == "vfork") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_43_ommap") {
    pcmd("/* TODO */")
  } else if (syscall == "vadvise") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "munmap") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "mprotect") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "madvise") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "mincore") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "getgroups") {
    if (mode == "pre") {
      pcmd("unsigned int *gidset = (unsigned int *)gidset_;")
      pcmd("if (gidset) {")
      pcmd("  PRE_WRITE(gidset, sizeof(*gidset) * gidsetsize_);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  unsigned int *gidset = (unsigned int *)gidset_;")
      pcmd("  if (gidset) {")
      pcmd("    POST_WRITE(gidset, sizeof(*gidset) * gidsetsize_);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "setgroups") {
    if (mode == "pre") {
      pcmd("unsigned int *gidset = (unsigned int *)gidset_;")
      pcmd("if (gidset) {")
      pcmd("  PRE_READ(gidset, sizeof(*gidset) * gidsetsize_);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  unsigned int *gidset = (unsigned int *)gidset_;")
      pcmd("  if (gidset) {")
      pcmd("    POST_READ(gidset, sizeof(*gidset) * gidsetsize_);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "getpgrp") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "setpgid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50_setitimer") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_owait") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_12_oswapon") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_getitimer") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_ogethostname") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_osethostname") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_ogetdtablesize") {
    pcmd("/* TODO */")
  } else if (syscall == "dup2") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "fcntl") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50_select") {
    pcmd("/* TODO */")
  } else if (syscall == "fsync") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "setpriority") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_30_socket") {
    pcmd("/* TODO */")
  } else if (syscall == "connect") {
    if (mode == "pre") {
      pcmd("PRE_READ(name_, namelen_);")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  POST_READ(name_, namelen_);")
      pcmd("}")
    }
  } else if (syscall == "compat_43_oaccept") {
    pcmd("/* TODO */")
  } else if (syscall == "getpriority") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_43_osend") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_orecv") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_13_sigreturn13") {
    pcmd("/* TODO */")
  } else if (syscall == "bind") {
    if (mode == "pre") {
      pcmd("PRE_READ(name_, namelen_);")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  PRE_READ(name_, namelen_);")
      pcmd("}")
    }
  } else if (syscall == "setsockopt") {
    if (mode == "pre") {
      pcmd("if (val_) {")
      pcmd("  PRE_READ(val_, valsize_);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  if (val_) {")
      pcmd("    POST_READ(val_, valsize_);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "listen") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_43_osigvec") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_osigblock") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_osigsetmask") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_13_sigsuspend13") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_osigstack") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_orecvmsg") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_osendmsg") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_gettimeofday") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_getrusage") {
    pcmd("/* TODO */")
  } else if (syscall == "getsockopt") {
    pcmd("/* TODO */")
  } else if (syscall == "readv") {
    if (mode == "pre") {
      pcmd("struct __sanitizer_iovec *iovp = (struct __sanitizer_iovec *)iovp_;")
      pcmd("int i;")
      pcmd("if (iovp) {")
      pcmd("  PRE_READ(iovp, sizeof(struct __sanitizer_iovec) * iovcnt_);")
      pcmd("  for (i = 0; i < iovcnt_; i++) {")
      pcmd("    PRE_WRITE(iovp[i].iov_base, iovp[i].iov_len);")
      pcmd("  }")
      pcmd("}")
    } else {
      pcmd("struct __sanitizer_iovec *iovp = (struct __sanitizer_iovec *)iovp_;")
      pcmd("int i;")
      pcmd("uptr m, n = res;")
      pcmd("if (res > 0) {")
      pcmd("  if (iovp) {")
      pcmd("    POST_READ(iovp, sizeof(struct __sanitizer_iovec) * iovcnt_);")
      pcmd("    for (i = 0; i < iovcnt_ && n > 0; i++) {")
      pcmd("      m = n > iovp[i].iov_len ? iovp[i].iov_len : n;")
      pcmd("      POST_WRITE(iovp[i].iov_base, m);")
      pcmd("      n -= m;")
      pcmd("    }")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "writev") {
    if (mode == "pre") {
      pcmd("struct __sanitizer_iovec *iovp = (struct __sanitizer_iovec *)iovp_;")
      pcmd("int i;")
      pcmd("if (iovp) {")
      pcmd("  PRE_READ(iovp, sizeof(struct __sanitizer_iovec) * iovcnt_);")
      pcmd("  for (i = 0; i < iovcnt_; i++) {")
      pcmd("    PRE_READ(iovp[i].iov_base, iovp[i].iov_len);")
      pcmd("  }")
      pcmd("}")
    } else {
      pcmd("struct __sanitizer_iovec *iovp = (struct __sanitizer_iovec *)iovp_;")
      pcmd("int i;")
      pcmd("uptr m, n = res;")
      pcmd("if (res > 0) {")
      pcmd("  if (iovp) {")
      pcmd("    POST_READ(iovp, sizeof(struct __sanitizer_iovec) * iovcnt_);")
      pcmd("    for (i = 0; i < iovcnt_ && n > 0; i++) {")
      pcmd("      m = n > iovp[i].iov_len ? iovp[i].iov_len : n;")
      pcmd("      POST_READ(iovp[i].iov_base, m);")
      pcmd("      n -= m;")
      pcmd("    }")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "compat_50_settimeofday") {
    pcmd("/* TODO */")
  } else if (syscall == "fchown") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "fchmod") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_43_orecvfrom") {
    pcmd("/* TODO */")
  } else if (syscall == "setreuid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "setregid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "rename") {
    if (mode == "pre") {
      pcmd("const char *from = (const char *)from_;")
      pcmd("const char *to = (const char *)to_;")
      pcmd("if (from) {")
      pcmd("  PRE_READ(from, __sanitizer::internal_strlen(from) + 1);")
      pcmd("}")
      pcmd("if (to) {")
      pcmd("  PRE_READ(to, __sanitizer::internal_strlen(to) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *from = (const char *)from_;")
      pcmd("  const char *to = (const char *)to_;")
      pcmd("  if (from) {")
      pcmd("    POST_READ(from, __sanitizer::internal_strlen(from) + 1);")
      pcmd("  }")
      pcmd("  if (to) {")
      pcmd("    POST_READ(to, __sanitizer::internal_strlen(to) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "compat_43_otruncate") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_oftruncate") {
    pcmd("/* TODO */")
  } else if (syscall == "flock") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "mkfifo") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "sendto") {
    if (mode == "pre") {
      pcmd("PRE_READ(buf_, len_);")
      pcmd("PRE_READ(to_, tolen_);")
    } else {
      pcmd("if (res >= 0) {")
      pcmd("  POST_READ(buf_, len_);")
      pcmd("  POST_READ(to_, tolen_);")
      pcmd("}")
    }
  } else if (syscall == "shutdown") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "socketpair") {
    if (mode == "pre") {
      pcmd("PRE_WRITE(rsv_, 2 * sizeof(int));")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  POST_WRITE(rsv_, 2 * sizeof(int));")
      pcmd("}")
    }
  } else if (syscall == "mkdir") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "rmdir") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "compat_50_utimes") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_adjtime") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_ogetpeername") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_ogethostid") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_osethostid") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_ogetrlimit") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_osetrlimit") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_okillpg") {
    pcmd("/* TODO */")
  } else if (syscall == "setsid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50_quotactl") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_oquota") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_43_ogetsockname") {
    pcmd("/* TODO */")
  } else if (syscall == "nfssvc") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_43_ogetdirentries") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_20_statfs") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_20_fstatfs") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_30_getfh") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_09_ogetdomainname") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_09_osetdomainname") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_09_ouname") {
    pcmd("/* TODO */")
  } else if (syscall == "sysarch") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_10_osemsys") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_10_omsgsys") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_10_oshmsys") {
    pcmd("/* TODO */")
  } else if (syscall == "pread") {
    if (mode == "pre") {
      pcmd("if (buf_) {")
      pcmd("  PRE_WRITE(buf_, nbyte_);")
      pcmd("}")
    } else {
      pcmd("if (res > 0) {")
      pcmd("  POST_WRITE(buf_, res);")
      pcmd("}")
    }
  } else if (syscall == "pwrite") {
    if (mode == "pre") {
      pcmd("if (buf_) {")
      pcmd("  PRE_READ(buf_, nbyte_);")
      pcmd("}")
    } else {
      pcmd("if (res > 0) {")
      pcmd("  POST_READ(buf_, res);")
      pcmd("}")
    }
  } else if (syscall == "compat_30_ntp_gettime") {
    pcmd("/* TODO */")
  } else if (syscall == "ntp_adjtime") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "setgid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "setegid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "seteuid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "lfs_bmapv") {
    pcmd("/* TODO */")
  } else if (syscall == "lfs_markv") {
    pcmd("/* TODO */")
  } else if (syscall == "lfs_segclean") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_lfs_segwait") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_12_stat12") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_12_fstat12") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_12_lstat12") {
    pcmd("/* TODO */")
  } else if (syscall == "pathconf") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res != -1) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "getsockopt2") {
    pcmd("/* TODO */")
  } else if (syscall == "fpathconf") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "getrlimit") {
    if (mode == "pre") {
      pcmd("PRE_WRITE(rlp_, struct_rlimit_sz);")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  POST_WRITE(rlp_, struct_rlimit_sz);")
      pcmd("}")
    }
  } else if (syscall == "setrlimit") {
    if (mode == "pre") {
      pcmd("PRE_READ(rlp_, struct_rlimit_sz);")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  POST_READ(rlp_, struct_rlimit_sz);")
      pcmd("}")
    }
  } else if (syscall == "compat_12_getdirentries") {
    pcmd("/* TODO */")
  } else if (syscall == "mmap") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__syscall") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "lseek") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "truncate") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "ftruncate") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__sysctl") {
    if (mode == "pre") {
      pcmd("const int *name = (const int *)name_;")
      pcmd("if (name) {")
      pcmd("  PRE_READ(name, namelen_ * sizeof(*name));")
      pcmd("}")
      pcmd("if (newv_) {")
      pcmd("  PRE_READ(name, newlen_);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const int *name = (const int *)name_;")
      pcmd("  if (name) {")
      pcmd("    POST_READ(name, namelen_ * sizeof(*name));")
      pcmd("  }")
      pcmd("  if (newv_) {")
      pcmd("    POST_READ(name, newlen_);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "mlock") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "munlock") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "undelete") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  const char *path = (const char *)path_;")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "compat_50_futimes") {
    pcmd("/* TODO */")
  } else if (syscall == "getpgid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "reboot") {
    if (mode == "pre") {
      pcmd("const char *bootstr = (const char *)bootstr_;")
      pcmd("if (bootstr) {")
      pcmd("  PRE_READ(bootstr, __sanitizer::internal_strlen(bootstr) + 1);")
      pcmd("}")
    } else {
      pcmd("/* This call should never return */")
      pcmd("const char *bootstr = (const char *)bootstr_;")
      pcmd("if (bootstr) {")
      pcmd("  POST_READ(bootstr, __sanitizer::internal_strlen(bootstr) + 1);")
      pcmd("}")
    }
  } else if (syscall == "poll") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "afssys") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_14___semctl") {
    pcmd("/* TODO */")
  } else if (syscall == "semget") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "semop") {
    if (mode == "pre") {
      pcmd("if (sops_) {")
      pcmd("  PRE_READ(sops_, nsops_ * struct_sembuf_sz);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  if (sops_) {")
      pcmd("    POST_READ(sops_, nsops_ * struct_sembuf_sz);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "semconfig") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_14_msgctl") {
    pcmd("/* TODO */")
  } else if (syscall == "msgget") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "msgsnd") {
    if (mode == "pre") {
      pcmd("if (msgp_) {")
      pcmd("  PRE_READ(msgp_, msgsz_);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  if (msgp_) {")
      pcmd("    POST_READ(msgp_, msgsz_);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "msgrcv") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "shmat") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_14_shmctl") {
    pcmd("/* TODO */")
  } else if (syscall == "shmdt") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "shmget") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50_clock_gettime") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_clock_settime") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_clock_getres") {
    pcmd("/* TODO */")
  } else if (syscall == "timer_create") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "timer_delete") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50_timer_settime") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_timer_gettime") {
    pcmd("/* TODO */")
  } else if (syscall == "timer_getoverrun") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50_nanosleep") {
    pcmd("/* TODO */")
  } else if (syscall == "fdatasync") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "mlockall") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "munlockall") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50___sigtimedwait") {
    pcmd("/* TODO */")
  } else if (syscall == "sigqueueinfo") {
    if (mode == "pre") {
      pcmd("if (info_) {")
      pcmd("  PRE_READ(info_, siginfo_t_sz);")
      pcmd("}")
    }
  } else if (syscall == "modctl") {
    pcmd("/* TODO */")
  } else if (syscall == "_ksem_init") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_ksem_open") {
    if (mode == "pre") {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  PRE_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  POST_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    }
  } else if (syscall == "_ksem_unlink") {
    if (mode == "pre") {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  PRE_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  POST_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    }
  } else if (syscall == "_ksem_close") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_ksem_post") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_ksem_wait") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_ksem_trywait") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_ksem_getvalue") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_ksem_destroy") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_ksem_timedwait") {
    if (mode == "pre") {
      pcmd("if (abstime_) {")
      pcmd("  PRE_READ(abstime_, struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "mq_open") {
    if (mode == "pre") {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  PRE_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  POST_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    }
  } else if (syscall == "mq_close") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "mq_unlink") {
    if (mode == "pre") {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  PRE_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  POST_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    }
  } else if (syscall == "mq_getattr") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "mq_setattr") {
    if (mode == "pre") {
      pcmd("if (mqstat_) {")
      pcmd("  PRE_READ(mqstat_, struct_mq_attr_sz);")
      pcmd("}")
    }
  } else if (syscall == "mq_notify") {
    if (mode == "pre") {
      pcmd("if (notification_) {")
      pcmd("  PRE_READ(notification_, struct_sigevent_sz);")
      pcmd("}")
    }
  } else if (syscall == "mq_send") {
    if (mode == "pre") {
      pcmd("if (msg_ptr_) {")
      pcmd("  PRE_READ(msg_ptr_, msg_len_);")
      pcmd("}")
    }
  } else if (syscall == "mq_receive") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50_mq_timedsend") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_mq_timedreceive") {
    pcmd("/* TODO */")
  } else if (syscall == "__posix_rename") {
    if (mode == "pre") {
      pcmd("const char *from = (const char *)from_;")
      pcmd("const char *to = (const char *)to_;")
      pcmd("if (from_) {")
      pcmd("  PRE_READ(from, __sanitizer::internal_strlen(from) + 1);")
      pcmd("}")
      pcmd("if (to) {")
      pcmd("  PRE_READ(to, __sanitizer::internal_strlen(to) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *from = (const char *)from_;")
      pcmd("const char *to = (const char *)to_;")
      pcmd("if (from) {")
      pcmd("  POST_READ(from, __sanitizer::internal_strlen(from) + 1);")
      pcmd("}")
      pcmd("if (to) {")
      pcmd("  POST_READ(to, __sanitizer::internal_strlen(to) + 1);")
      pcmd("}")
    }
  } else if (syscall == "swapctl") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_30_getdents") {
    pcmd("/* TODO */")
  } else if (syscall == "minherit") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "lchmod") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "lchown") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "compat_50_lutimes") {
    pcmd("/* TODO */")
  } else if (syscall == "__msync13") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_30___stat13") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_30___fstat13") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_30___lstat13") {
    pcmd("/* TODO */")
  } else if (syscall == "__sigaltstack14") {
    if (mode == "pre") {
      pcmd("if (nss_) {")
      pcmd("  PRE_READ(nss_, struct_sigaltstack_sz);")
      pcmd("}")
      pcmd("if (oss_) {")
      pcmd("  PRE_READ(oss_, struct_sigaltstack_sz);")
      pcmd("}")
    }
  } else if (syscall == "__vfork14") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__posix_chown") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "__posix_fchown") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__posix_lchown") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "getsid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__clone") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "fktrace") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "preadv") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "pwritev") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_16___sigaction14") {
    pcmd("/* TODO */")
  } else if (syscall == "__sigpending14") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__sigprocmask14") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__sigsuspend14") {
    pcmd("if (set_) {")
    pcmd("  PRE_READ(set_, sizeof(__sanitizer_sigset_t));")
    pcmd("}")
  } else if (syscall == "compat_16___sigreturn14") {
    pcmd("/* TODO */")
  } else if (syscall == "__getcwd") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "fchroot") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_30_fhopen") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_30_fhstat") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_20_fhstatfs") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_____semctl13") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50___msgctl13") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50___shmctl13") {
    pcmd("/* TODO */")
  } else if (syscall == "lchflags") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "issetugid") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "utrace") {
    if (mode == "pre") {
      pcmd("const char *label = (const char *)label_;")
      pcmd("if (label) {")
      pcmd("  PRE_READ(label, __sanitizer::internal_strlen(label) + 1);")
      pcmd("}")
      pcmd("if (addr_) {")
      pcmd("  PRE_READ(addr_, len_);")
      pcmd("}")
    } else {
      pcmd("const char *label = (const char *)label_;")
      pcmd("if (label) {")
      pcmd("  POST_READ(label, __sanitizer::internal_strlen(label) + 1);")
      pcmd("}")
      pcmd("if (addr_) {")
      pcmd("  POST_READ(addr_, len_);")
      pcmd("}")
    }
  } else if (syscall == "getcontext") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "setcontext") {
    if (mode == "pre") {
      pcmd("if (ucp_) {")
      pcmd("  PRE_READ(ucp_, ucontext_t_sz);")
      pcmd("}")
    }
  } else if (syscall == "_lwp_create") {
    if (mode == "pre") {
      pcmd("if (ucp_) {")
      pcmd("  PRE_READ(ucp_, ucontext_t_sz);")
      pcmd("}")
    }
  } else if (syscall == "_lwp_exit") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_self") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_wait") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_suspend") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_continue") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_wakeup") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_getprivate") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_setprivate") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_kill") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_detach") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50__lwp_park") {
    pcmd("/* TODO */")
  } else if (syscall == "_lwp_unpark") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_unpark_all") {
    if (mode == "pre") {
      pcmd("if (targets_) {")
      pcmd("  PRE_READ(targets_, ntargets_ * sizeof(__sanitizer_lwpid_t));")
      pcmd("}")
    }
  } else if (syscall == "_lwp_setname") {
    if (mode == "pre") {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  PRE_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *name = (const char *)name_;")
      pcmd("if (name) {")
      pcmd("  POST_READ(name, __sanitizer::internal_strlen(name) + 1);")
      pcmd("}")
    }
  } else if (syscall == "_lwp_getname") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_lwp_ctl") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_60_sa_register") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_60_sa_stacks") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_60_sa_enable") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_60_sa_setconcurrency") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_60_sa_yield") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_60_sa_preempt") {
    pcmd("/* TODO */")
  } else if (syscall == "__sigaction_sigtramp") {
    pcmd("if (nsa_) {")
    pcmd("  PRE_READ(nsa_, sizeof(__sanitizer_sigaction));")
    pcmd("}")
  } else if (syscall == "rasctl") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "kqueue") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_50_kevent") {
    pcmd("/* TODO */")
  } else if (syscall == "_sched_setparam") {
    pcmd("if (params_) {")
    pcmd("  PRE_READ(params_, struct_sched_param_sz);")
    pcmd("}")
  } else if (syscall == "_sched_getparam") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_sched_setaffinity") {
    pcmd("if (cpuset_) {")
    pcmd("  PRE_READ(cpuset_, size_);")
    pcmd("}")
  } else if (syscall == "_sched_getaffinity") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "sched_yield") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_sched_protect") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "fsync_range") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "uuidgen") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_90_getvfsstat") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_90_statvfs1") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "compat_90_fstatvfs1") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_30_fhstatvfs1") {
    pcmd("/* TODO */")
  } else if (syscall == "extattrctl") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "extattr_set_file") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "extattr_get_file") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "extattr_delete_file") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "extattr_set_fd") {
    pcmd("/* TODO */")
  } else if (syscall == "extattr_get_fd") {
    pcmd("/* TODO */")
  } else if (syscall == "extattr_delete_fd") {
    pcmd("/* TODO */")
  } else if (syscall == "extattr_set_link") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "extattr_get_link") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "extattr_delete_link") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "extattr_list_fd") {
    pcmd("/* TODO */")
  } else if (syscall == "extattr_list_file") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "extattr_list_link") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "compat_50_pselect") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50_pollts") {
    pcmd("/* TODO */")
  } else if (syscall == "setxattr") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "lsetxattr") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "fsetxattr") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "getxattr") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "lgetxattr") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "fgetxattr") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "listxattr") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "llistxattr") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "flistxattr") {
    pcmd("/* TODO */")
  } else if (syscall == "removexattr") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "lremovexattr") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "fremovexattr") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50___stat30") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50___fstat30") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50___lstat30") {
    pcmd("/* TODO */")
  } else if (syscall == "__getdents30") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "posix_fadvise") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "compat_30___fhstat30") {
    pcmd("/* TODO */")
  } else if (syscall == "compat_50___ntp_gettime30") {
    pcmd("/* TODO */")
  } else if (syscall == "__socket30") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__getfh30") {
    if (mode == "pre") {
      pcmd("const char *fname = (const char *)fname_;")
      pcmd("if (fname) {")
      pcmd("  PRE_READ(fname, __sanitizer::internal_strlen(fname) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *fname = (const char *)fname_;")
      pcmd("if (res == 0) {")
      pcmd("  if (fname) {")
      pcmd("    POST_READ(fname, __sanitizer::internal_strlen(fname) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "__fhopen40") {
    if (mode == "pre") {
      pcmd("if (fhp_) {")
      pcmd("  PRE_READ(fhp_, fh_size_);")
      pcmd("}")
    }
  } else if (syscall == "compat_90_fhstatvfs1") {
    if (mode == "pre") {
      pcmd("if (fhp_) {")
      pcmd("  PRE_READ(fhp_, fh_size_);")
      pcmd("}")
    }
  } else if (syscall == "compat_50___fhstat40") {
    if (mode == "pre") {
      pcmd("if (fhp_) {")
      pcmd("  PRE_READ(fhp_, fh_size_);")
      pcmd("}")
    }
  } else if (syscall == "aio_cancel") {
    if (mode == "pre") {
      pcmd("if (aiocbp_) {")
      pcmd("  PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb));")
      pcmd("}")
    }
  } else if (syscall == "aio_error") {
    if (mode == "pre") {
      pcmd("if (aiocbp_) {")
      pcmd("  PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb));")
      pcmd("}")
    }
  } else if (syscall == "aio_fsync") {
    if (mode == "pre") {
      pcmd("if (aiocbp_) {")
      pcmd("  PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb));")
      pcmd("}")
    }
  } else if (syscall == "aio_read") {
    if (mode == "pre") {
      pcmd("if (aiocbp_) {")
      pcmd("  PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb));")
      pcmd("}")
    }
  } else if (syscall == "aio_return") {
    if (mode == "pre") {
      pcmd("if (aiocbp_) {")
      pcmd("  PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb));")
      pcmd("}")
    }
  } else if (syscall == "compat_50_aio_suspend") {
    pcmd("/* TODO */")
  } else if (syscall == "aio_write") {
    if (mode == "pre") {
      pcmd("if (aiocbp_) {")
      pcmd("  PRE_READ(aiocbp_, sizeof(struct __sanitizer_aiocb));")
      pcmd("}")
    }
  } else if (syscall == "lio_listio") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__mount50") {
    if (mode == "pre") {
      pcmd("const char *type = (const char *)type_;")
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (type) {")
      pcmd("  PRE_READ(type, __sanitizer::internal_strlen(type) + 1);")
      pcmd("}")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (data_) {")
      pcmd("  PRE_READ(data_, data_len_);")
      pcmd("}")
    } else {
      pcmd("const char *type = (const char *)type_;")
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (type) {")
      pcmd("  POST_READ(type, __sanitizer::internal_strlen(type) + 1);")
      pcmd("}")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (data_) {")
      pcmd("  POST_READ(data_, data_len_);")
      pcmd("}")
    }
  } else if (syscall == "mremap") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "pset_create") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "pset_destroy") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "pset_assign") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "_pset_bind") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__posix_fadvise50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__select50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__gettimeofday50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__settimeofday50") {
    if (mode == "pre") {
      pcmd("if (tv_) {")
      pcmd("  PRE_READ(tv_, timeval_sz);")
      pcmd("}")
      pcmd("if (tzp_) {")
      pcmd("  PRE_READ(tzp_, struct_timezone_sz);")
      pcmd("}")
    }
  } else if (syscall == "__utimes50") {
    if (mode == "pre") {
      pcmd("struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_;")
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (tptr) {")
      pcmd("  PRE_READ(tptr[0], struct_timespec_sz);")
      pcmd("  PRE_READ(tptr[1], struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "__adjtime50") {
    if (mode == "pre") {
      pcmd("if (delta_) {")
      pcmd("  PRE_READ(delta_, timeval_sz);")
      pcmd("}")
    }
  } else if (syscall == "__lfs_segwait50") {
    pcmd("/* TODO */")
  } else if (syscall == "__futimes50") {
    if (mode == "pre") {
      pcmd("struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_;")
      pcmd("if (tptr) {")
      pcmd("  PRE_READ(tptr[0], struct_timespec_sz);")
      pcmd("  PRE_READ(tptr[1], struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "__lutimes50") {
    if (mode == "pre") {
      pcmd("struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_;")
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (tptr) {")
      pcmd("  PRE_READ(tptr[0], struct_timespec_sz);")
      pcmd("  PRE_READ(tptr[1], struct_timespec_sz);")
      pcmd("}")
    } else {
      pcmd("struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_;")
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (tptr) {")
      pcmd("  POST_READ(tptr[0], struct_timespec_sz);")
      pcmd("  POST_READ(tptr[1], struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "__setitimer50") {
    if (mode == "pre") {
      pcmd("struct __sanitizer_itimerval *itv = (struct __sanitizer_itimerval *)itv_;")
      pcmd("if (itv) {")
      pcmd("  PRE_READ(&itv->it_interval.tv_sec, sizeof(__sanitizer_time_t));")
      pcmd("  PRE_READ(&itv->it_interval.tv_usec, sizeof(__sanitizer_suseconds_t));")
      pcmd("  PRE_READ(&itv->it_value.tv_sec, sizeof(__sanitizer_time_t));")
      pcmd("  PRE_READ(&itv->it_value.tv_usec, sizeof(__sanitizer_suseconds_t));")
      pcmd("}")
    }
  } else if (syscall == "__getitimer50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__clock_gettime50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__clock_settime50") {
    if (mode == "pre") {
      pcmd("if (tp_) {")
      pcmd("  PRE_READ(tp_, struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "__clock_getres50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__nanosleep50") {
    if (mode == "pre") {
      pcmd("if (rqtp_) {")
      pcmd("  PRE_READ(rqtp_, struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "____sigtimedwait50") {
    if (mode == "pre") {
      pcmd("if (set_) {")
      pcmd("  PRE_READ(set_, sizeof(__sanitizer_sigset_t));")
      pcmd("}")
      pcmd("if (timeout_) {")
      pcmd("  PRE_READ(timeout_, struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "__mq_timedsend50") {
    if (mode == "pre") {
      pcmd("if (msg_ptr_) {")
      pcmd("  PRE_READ(msg_ptr_, msg_len_);")
      pcmd("}")
      pcmd("if (abs_timeout_) {")
      pcmd("  PRE_READ(abs_timeout_, struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "__mq_timedreceive50") {
    if (mode == "pre") {
      pcmd("if (msg_ptr_) {")
      pcmd("  PRE_READ(msg_ptr_, msg_len_);")
      pcmd("}")
      pcmd("if (abs_timeout_) {")
      pcmd("  PRE_READ(abs_timeout_, struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "compat_60__lwp_park") {
    pcmd("/* TODO */")
  } else if (syscall == "__kevent50") {
    if (mode == "pre") {
      pcmd("if (changelist_) {")
      pcmd("  PRE_READ(changelist_, nchanges_ * struct_kevent_sz);")
      pcmd("}")
      pcmd("if (timeout_) {")
      pcmd("  PRE_READ(timeout_, struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "__pselect50") {
    if (mode == "pre") {
      pcmd("if (ts_) {")
      pcmd("  PRE_READ(ts_, struct_timespec_sz);")
      pcmd("}")
      pcmd("if (mask_) {")
      pcmd("  PRE_READ(mask_, sizeof(struct __sanitizer_sigset_t));")
      pcmd("}")
    }
  } else if (syscall == "__pollts50") {
    if (mode == "pre") {
      pcmd("if (ts_) {")
      pcmd("  PRE_READ(ts_, struct_timespec_sz);")
      pcmd("}")
      pcmd("if (mask_) {")
      pcmd("  PRE_READ(mask_, sizeof(struct __sanitizer_sigset_t));")
      pcmd("}")
    }
  } else if (syscall == "__aio_suspend50") {
    if (mode == "pre") {
      pcmd("int i;")
      pcmd("const struct aiocb * const *list = (const struct aiocb * const *)list_;")
      pcmd("if (list) {")
      pcmd("  for (i = 0; i < nent_; i++) {")
      pcmd("    if (list[i]) {")
      pcmd("      PRE_READ(list[i], sizeof(struct __sanitizer_aiocb));")
      pcmd("    }")
      pcmd("  }")
      pcmd("}")
      pcmd("if (timeout_) {")
      pcmd("  PRE_READ(timeout_, struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "__stat50") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "__fstat50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__lstat50") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "____semctl50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__shmctl50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__msgctl50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__getrusage50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__timer_settime50") {
    if (mode == "pre") {
      pcmd("struct __sanitizer_itimerval *value = (struct __sanitizer_itimerval *)value_;")
      pcmd("if (value) {")
      pcmd("  PRE_READ(&value->it_interval.tv_sec, sizeof(__sanitizer_time_t));")
      pcmd("  PRE_READ(&value->it_interval.tv_usec, sizeof(__sanitizer_suseconds_t));")
      pcmd("  PRE_READ(&value->it_value.tv_sec, sizeof(__sanitizer_time_t));")
      pcmd("  PRE_READ(&value->it_value.tv_usec, sizeof(__sanitizer_suseconds_t));")
      pcmd("}")
    } else {
      pcmd("struct __sanitizer_itimerval *value = (struct __sanitizer_itimerval *)value_;")
      pcmd("if (res == 0) {")
      pcmd("  if (value) {")
      pcmd("    POST_READ(&value->it_interval.tv_sec, sizeof(__sanitizer_time_t));")
      pcmd("    POST_READ(&value->it_interval.tv_usec, sizeof(__sanitizer_suseconds_t));")
      pcmd("    POST_READ(&value->it_value.tv_sec, sizeof(__sanitizer_time_t));")
      pcmd("    POST_READ(&value->it_value.tv_usec, sizeof(__sanitizer_suseconds_t));")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "__timer_gettime50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__ntp_gettime50") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__wait450") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__mknod50") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "__fhstat50") {
    if (mode == "pre") {
      pcmd("if (fhp_) {")
      pcmd("  PRE_READ(fhp_, fh_size_);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  if (fhp_) {")
      pcmd("    POST_READ(fhp_, fh_size_);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "pipe2") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "dup3") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "kqueue1") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "paccept") {
    if (mode == "pre") {
      pcmd("if (mask_) {")
      pcmd("  PRE_READ(mask_, sizeof(__sanitizer_sigset_t));")
      pcmd("}")
    } else {
      pcmd("if (res >= 0) {")
      pcmd("  if (mask_) {")
      pcmd("    PRE_READ(mask_, sizeof(__sanitizer_sigset_t));")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "linkat") {
    if (mode == "pre") {
      pcmd("const char *name1 = (const char *)name1_;")
      pcmd("const char *name2 = (const char *)name2_;")
      pcmd("if (name1) {")
      pcmd("  PRE_READ(name1, __sanitizer::internal_strlen(name1) + 1);")
      pcmd("}")
      pcmd("if (name2) {")
      pcmd("  PRE_READ(name2, __sanitizer::internal_strlen(name2) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *name1 = (const char *)name1_;")
      pcmd("const char *name2 = (const char *)name2_;")
      pcmd("if (res == 0) {")
      pcmd("  if (name1) {")
      pcmd("    POST_READ(name1, __sanitizer::internal_strlen(name1) + 1);")
      pcmd("  }")
      pcmd("  if (name2) {")
      pcmd("    POST_READ(name2, __sanitizer::internal_strlen(name2) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "renameat") {
    if (mode == "pre") {
      pcmd("const char *from = (const char *)from_;")
      pcmd("const char *to = (const char *)to_;")
      pcmd("if (from) {")
      pcmd("  PRE_READ(from, __sanitizer::internal_strlen(from) + 1);")
      pcmd("}")
      pcmd("if (to) {")
      pcmd("  PRE_READ(to, __sanitizer::internal_strlen(to) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *from = (const char *)from_;")
      pcmd("const char *to = (const char *)to_;")
      pcmd("if (res == 0) {")
      pcmd("  if (from) {")
      pcmd("    POST_READ(from, __sanitizer::internal_strlen(from) + 1);")
      pcmd("  }")
      pcmd("  if (to) {")
      pcmd("    POST_READ(to, __sanitizer::internal_strlen(to) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "mkfifoat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "mknodat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "mkdirat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "faccessat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "fchmodat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "fchownat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "fexecve") {
    pcmd("/* TODO */")
  } else if (syscall == "fstatat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "utimensat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
      pcmd("if (tptr_) {")
      pcmd("  PRE_READ(tptr_, struct_timespec_sz);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res > 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("  if (tptr_) {")
      pcmd("    POST_READ(tptr_, struct_timespec_sz);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "openat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res > 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "readlinkat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res > 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "symlinkat") {
    if (mode == "pre") {
      pcmd("const char *path1 = (const char *)path1_;")
      pcmd("const char *path2 = (const char *)path2_;")
      pcmd("if (path1) {")
      pcmd("  PRE_READ(path1, __sanitizer::internal_strlen(path1) + 1);")
      pcmd("}")
      pcmd("if (path2) {")
      pcmd("  PRE_READ(path2, __sanitizer::internal_strlen(path2) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path1 = (const char *)path1_;")
      pcmd("const char *path2 = (const char *)path2_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path1) {")
      pcmd("    POST_READ(path1, __sanitizer::internal_strlen(path1) + 1);")
      pcmd("  }")
      pcmd("  if (path2) {")
      pcmd("    POST_READ(path2, __sanitizer::internal_strlen(path2) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "unlinkat") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "futimens") {
    if (mode == "pre") {
      pcmd("struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_;")
      pcmd("if (tptr) {")
      pcmd("  PRE_READ(tptr[0], struct_timespec_sz);")
      pcmd("  PRE_READ(tptr[1], struct_timespec_sz);")
      pcmd("}")
    } else {
      pcmd("struct __sanitizer_timespec **tptr = (struct __sanitizer_timespec **)tptr_;")
      pcmd("if (res == 0) {")
      pcmd("  if (tptr) {")
      pcmd("    POST_READ(tptr[0], struct_timespec_sz);")
      pcmd("    POST_READ(tptr[1], struct_timespec_sz);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "__quotactl") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (res == 0) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "posix_spawn") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (pid_) {")
      pcmd("  if (path) {")
      pcmd("    POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "recvmmsg") {
    if (mode == "pre") {
      pcmd("if (timeout_) {")
      pcmd("  PRE_READ(timeout_, struct_timespec_sz);")
      pcmd("}")
    } else {
      pcmd("if (res >= 0) {")
      pcmd("  if (timeout_) {")
      pcmd("    POST_READ(timeout_, struct_timespec_sz);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "sendmmsg") {
    if (mode == "pre") {
      pcmd("struct __sanitizer_mmsghdr *mmsg = (struct __sanitizer_mmsghdr *)mmsg_;")
      pcmd("if (mmsg) {")
      pcmd("  PRE_READ(mmsg, sizeof(struct __sanitizer_mmsghdr) * (vlen_ > 1024 ? 1024 : vlen_));")
      pcmd("}")
    } else {
      pcmd("struct __sanitizer_mmsghdr *mmsg = (struct __sanitizer_mmsghdr *)mmsg_;")
      pcmd("if (res >= 0) {")
      pcmd("  if (mmsg) {")
      pcmd("    POST_READ(mmsg, sizeof(struct __sanitizer_mmsghdr) * (vlen_ > 1024 ? 1024 : vlen_));")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "clock_nanosleep") {
    if (mode == "pre") {
      pcmd("if (rqtp_) {")
      pcmd("  PRE_READ(rqtp_, struct_timespec_sz);")
      pcmd("}")
    } else {
      pcmd("if (rqtp_) {")
      pcmd("  POST_READ(rqtp_, struct_timespec_sz);")
      pcmd("}")
    }
  } else if (syscall == "___lwp_park60") {
    if (mode == "pre") {
      pcmd("if (ts_) {")
      pcmd("  PRE_READ(ts_, struct_timespec_sz);")
      pcmd("}")
    } else {
      pcmd("if (res == 0) {")
      pcmd("  if (ts_) {")
      pcmd("    POST_READ(ts_, struct_timespec_sz);")
      pcmd("  }")
      pcmd("}")
    }
  } else if (syscall == "posix_fallocate") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "fdiscard") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "wait6") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "clock_getcpuclockid2") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__getvfsstat90") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__statvfs190") {
    if (mode == "pre") {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  PRE_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    } else {
      pcmd("const char *path = (const char *)path_;")
      pcmd("if (path) {")
      pcmd("  POST_READ(path, __sanitizer::internal_strlen(path) + 1);")
      pcmd("}")
    }
  } else if (syscall == "__fstatvfs190") {
    pcmd("/* Nothing to do */")
  } else if (syscall == "__fhstatvfs190") {
    if (mode == "pre") {
      pcmd("if (fhp_) {")
      pcmd("  PRE_READ(fhp_, fh_size_);")
      pcmd("}")
    }
  } else {
    print "Unrecognized syscall: " syscall
    abnormal_exit = 1
    exit 1
  }
}
